Phase 1: database schema, migrations, repository, user seeding

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Jānis Kacēns
2026-05-11 11:38:31 +03:00
parent 34eb47b595
commit 0bc9160d97
8 changed files with 668 additions and 1 deletions
+21
View File
@@ -6,6 +6,7 @@ import (
"net/http"
"os"
"os/signal"
"path/filepath"
"syscall"
"time"
@@ -13,6 +14,7 @@ import (
"github.com/go-chi/chi/v5/middleware"
"qbank/internal/config"
"qbank/internal/db"
)
func main() {
@@ -21,6 +23,25 @@ func main() {
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
slog.SetDefault(logger)
if err := os.MkdirAll(cfg.DataDir, 0755); err != nil {
slog.Error("create data dir", "err", err)
os.Exit(1)
}
database, err := db.Open(filepath.Join(cfg.DataDir, "qbank.db"))
if err != nil {
slog.Error("open database", "err", err)
os.Exit(1)
}
defer database.Close()
if err := db.Seed(database, cfg.AdminUsers); err != nil {
slog.Error("seed users", "err", err)
os.Exit(1)
}
_ = db.New(database) // repo will be wired into handlers in later phases
r := chi.NewRouter()
r.Use(middleware.RequestID)
r.Use(requestLogger(logger))