//go:generate oapi-codegen --config=oapi-codegen.yml openapi.yml package main import ( "code.dlmw.ch/dlmw/qv/internal/models" "database/sql" "github.com/go-playground/form/v4" _ "github.com/mattn/go-sqlite3" "log/slog" "net/http" "os" "time" ) type application struct { logger *slog.Logger elections models.ElectionModelInterface formDecoder *form.Decoder } var addr = ":8080" func main() { logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) db, err := openDb() if err != nil { logger.Error(err.Error()) os.Exit(1) } defer db.Close() formDecoder := form.NewDecoder() app := &application{ logger: logger, elections: &models.ElectionModel{DB: db}, formDecoder: formDecoder, } logger.Info("Starting server", "addr", addr) srv := &http.Server{ Addr: addr, Handler: app.routes(), ErrorLog: slog.NewLogLogger(logger.Handler(), slog.LevelError), IdleTimeout: time.Minute, ReadTimeout: 5 * time.Second, WriteTimeout: 10 * time.Second, } err = srv.ListenAndServe() logger.Error(err.Error()) os.Exit(1) } func openDb() (*sql.DB, error) { db, err := sql.Open("sqlite3", "./qv.sqlite") if err == nil { err = db.Ping() } return db, err }