1package main
2
3import (
4 "os"
5
6 "github.com/ClickHouse/clickhouse-go/v2"
7 "github.com/urfave/cli/v2"
8)
9
10func main() {
11 app := cli.App{
12 Name: "bodega",
13 Action: run,
14 Flags: []cli.Flag{
15 &cli.StringFlag{
16 Name: "clickhouse-addr",
17 EnvVars: []string{"PHOTOCOPY_CLICKHOUSE_ADDR"},
18 Required: true,
19 },
20 &cli.StringFlag{
21 Name: "clickhouse-database",
22 EnvVars: []string{"PHOTOCOPY_CLICKHOUSE_DATABASE"},
23 Required: true,
24 },
25 &cli.StringFlag{
26 Name: "clickhouse-user",
27 EnvVars: []string{"PHOTOCOPY_CLICKHOUSE_USER"},
28 Value: "default",
29 },
30 &cli.StringFlag{
31 Name: "clickhouse-pass",
32 EnvVars: []string{"PHOTOCOPY_CLICKHOUSE_PASS"},
33 Required: true,
34 },
35 },
36 }
37
38 app.Run(os.Args)
39}
40
41var run = func(cmd *cli.Context) error {
42 conn, err := clickhouse.Open(&clickhouse.Options{
43 Addr: []string{cmd.String("clickhouse-addr")},
44 Auth: clickhouse.Auth{
45 Database: cmd.String("clickhouse-database"),
46 Username: cmd.String("clickhouse-user"),
47 Password: cmd.String("clickhouse-pass"),
48 },
49 })
50 if err != nil {
51 return err
52 }
53 defer conn.Close()
54
55 var entries []ClickhousePLCEntry
56 if err := conn.Select(cmd.Context, &entries, "SELECT..."); err != nil {
57 return err
58 }
59
60 return nil
61}