M1/#292: core library schema + sqlc + admin bootstrap #5
Reference in New Issue
Block a user
Delete Branch "dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
0002_core_library: artists/albums/tracks/users with uuid PKs, partial-unique mbid indexes (WHERE mbid IS NOT NULL),tracks.file_path UNIQUE, sort-name/title indexes, timestamptz timestamps, pgcrypto forgen_random_uuid().sqlc.yamlv2 config, pgx/v5,emit_pointers_for_null_types): typed queries generated intointernal/db/dbq/— UpsertArtist/Album/Track (ON CONFLICT by mbid or file_path), Get by ID/name/path, List by album/artist, CreateUser, GetUserByUsername, GetUserByAPIToken, CountUsers. Generated code checked in so CI doesn't need sqlc.internal/auth.Bootstrap): fires on empty users table whenauth.admin_bootstrap.usernameis set; bcrypt password hash, 32-byte URL-safe api_token; blank password triggers random 18-byte generation and one-shot stderr print; idempotent (no-op when users exist). New env overridesSMARTMUSIC_AUTH_ADMIN_USERNAME/SMARTMUSIC_AUTH_ADMIN_PASSWORD.sqlc generate(docker),go test [-short] -race, lint, build.golang.org/x/crypto v0.35.0promoted to direct; go toolchain stays 1.23.0.Verification (local)
go build ./...,go vet ./...,gofmt -l→ cleango test -short -race ./...→ passpostgres:16-alpineon :55432):TestBootstrap_Integrationpasses — admin created + idempotent re-run, token lookup round-trips, bcrypt compare succeedsdocker run ... runner-base:go-ci— golangci-lint + short tests greenSMARTMUSIC_DATABASE_URL=... SMARTMUSIC_AUTH_ADMIN_USERNAME=admin go run ./cmd/minstrel→ migrations applied v2, admin bootstrapped with generated password+token printed once,/healthzreturns{"status":"ok"}Test plan
test.ymlgreen on devrelease.ymlpublishes new:mainimage🤖 Generated with Claude Code