1package main
2
3import (
4 "context"
5 "fmt"
6 "log"
7 "os"
8
9 "github.com/bluesky-social/go-util/pkg/telemetry"
10 "github.com/urfave/cli/v2"
11 "github.com/vylet-app/go/database/server"
12)
13
14func main() {
15 app := cli.App{
16 Name: "vylet-database",
17 Flags: []cli.Flag{
18 telemetry.CLIFlagDebug,
19 telemetry.CLIFlagMetricsListenAddress,
20 &cli.StringFlag{
21 Name: "listen-addr",
22 Value: ":9090",
23 EnvVars: []string{"VYLET_DATABASE_LISTEN_ADDR"},
24 },
25 &cli.StringSliceFlag{
26 Name: "cassandra-addrs",
27 Value: cli.NewStringSlice("127.0.0.1"),
28 EnvVars: []string{"VYLET_DATABASE_CASSANDRA_ADDRS"},
29 },
30 &cli.StringFlag{
31 Name: "cassandra-keyspace",
32 Value: "vylet",
33 EnvVars: []string{"VYLET_DATABASE_CASSANDRA_KEYSPACE"},
34 },
35 },
36 Action: run,
37 }
38
39 if err := app.Run(os.Args); err != nil {
40 log.Fatal(err)
41 }
42}
43
44func run(cmd *cli.Context) error {
45 ctx := context.Background()
46
47 logger := telemetry.StartLogger(cmd)
48 telemetry.StartMetrics(cmd)
49
50 server, err := server.New(&server.Args{
51 Logger: logger,
52
53 ListenAddr: cmd.String("listen-addr"),
54 CassandraAddrs: cmd.StringSlice("cassandra-addrs"),
55 CassandraKeyspace: cmd.String("cassandra-keyspace"),
56 })
57 if err != nil {
58 return fmt.Errorf("failed to create new server: %w", err)
59 }
60
61 if err := server.Run(ctx); err != nil {
62 return fmt.Errorf("failed to run server: %w", err)
63 }
64
65 return nil
66}