mood/inspo boards
1package main 2 3import ( 4 "context" 5 "os" 6 "time" 7 8 "github.com/charmbracelet/log" 9 _ "github.com/joho/godotenv/autoload" 10 "github.com/urfave/cli/v3" 11 "tangled.org/dane.is.extraordinarily.cool/pallet/internal/db" 12 "tangled.org/dane.is.extraordinarily.cool/pallet/internal/server" 13) 14 15func main() { 16 if err := run(os.Args); err != nil { 17 log.Fatal(err) 18 os.Exit(-1) 19 } 20} 21 22func run(args []string) error { 23 app := &cli.Command{ 24 Name: "pallet", 25 Usage: "pallet app server", 26 } 27 28 app.Flags = []cli.Flag{ 29 &cli.StringFlag{ 30 Name: "log-level", 31 Usage: "log verbosity level (eg: warn, info, debug)", 32 Sources: cli.EnvVars("GO_LOG_LEVEL", "LOG_LEVEL"), 33 }, 34 } 35 36 app.Commands = []*cli.Command{ 37 &cli.Command{ 38 Name: "start", 39 Usage: "start the pallet app server", 40 Action: runServer, 41 Flags: []cli.Flag{ 42 &cli.StringFlag{ 43 Name: "port", 44 Usage: "Port to bind the HTTP server to", 45 Value: ":8080", 46 Sources: cli.EnvVars("PORT"), 47 }, 48 }, 49 }, 50 } 51 52 return app.Run(context.Background(), args) 53} 54 55func runServer(ctx context.Context, cmd *cli.Command) error { 56 appContext, cancel := context.WithTimeout(ctx, time.Minute*5) 57 defer cancel() 58 logger := log.New(os.Stdout) 59 db, err := db.NewSQLiteDB() 60 if err != nil { 61 log.Fatal(err) 62 } 63 logger.Info("database created") 64 65 server := server.NewServer(appContext, cmd.String("port"), db, logger) 66 67 if err := server.Start(); err != nil { 68 log.Fatal(err) 69 } 70 71 return nil 72} 73 74// func migrate(db *sql.DB) { 75// _, err = db. 76// }