package main import ( "context" "database/sql" _ "embed" "flag" "fmt" "net/http" "git.red-panda.pet/pandaware/house/backend/router" "git.red-panda.pet/pandaware/house/backend/routes" "github.com/charmbracelet/log" _ "github.com/mattn/go-sqlite3" ) var port uint func init() { flag.UintVar(&port, "port", 8088, "") } //go:embed schema.sql var ddl string func main() { logger := log.Default() logger.SetReportCaller(true) logger.SetStyles(styles) ctx := context.Background() flag.Parse() db, err := sql.Open("sqlite3", "file::memory:?cache=shared") db.SetMaxIdleConns(1) db.SetConnMaxLifetime(0) if err != nil { logger.Fatal("unable to open db", "err", err) } if _, err := db.ExecContext(ctx, ddl); err != nil { logger.Fatal("unable to migrate db", "err", err) } seedDevData(db) r := router.NewRouter(logger, db) r.SetPrefix("/api/v1") routes.Register(r) logger.Info("starting server", "port", port) if err := http.ListenAndServe(fmt.Sprintf(":%d", port), r); err != nil { logger.Fatal("unable start http server", "err", err) } }