From 9cefb39d012731a99ed7c6cdeadbc6fa5adaf3ac Mon Sep 17 00:00:00 2001 From: mkelvers Date: Wed, 6 May 2026 23:11:05 +0200 Subject: [PATCH] refactor: consolidate db package and flatten structure --- internal/db/db.go | 2 +- internal/db/helpers.go | 2 +- internal/db/migrate.go | 2 +- internal/db/models.go | 4 ++-- internal/db/querier.go | 2 +- internal/db/queries.sql.go | 36 +++++++++++++++++------------- internal/db/{sqlite => }/sqlite.go | 9 ++++---- sqlc.yaml | 2 +- 8 files changed, 31 insertions(+), 28 deletions(-) rename internal/db/{sqlite => }/sqlite.go (82%) diff --git a/internal/db/db.go b/internal/db/db.go index 9f7a5a6..f43598b 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -2,7 +2,7 @@ // versions: // sqlc v1.31.1 -package database +package db import ( "context" diff --git a/internal/db/helpers.go b/internal/db/helpers.go index 25e2bee..dda7e8c 100644 --- a/internal/db/helpers.go +++ b/internal/db/helpers.go @@ -1,4 +1,4 @@ -package database +package db import ( "context" diff --git a/internal/db/migrate.go b/internal/db/migrate.go index f27af77..aa24e35 100644 --- a/internal/db/migrate.go +++ b/internal/db/migrate.go @@ -1,4 +1,4 @@ -package database +package db import ( "database/sql" diff --git a/internal/db/models.go b/internal/db/models.go index a974935..afce58a 100644 --- a/internal/db/models.go +++ b/internal/db/models.go @@ -2,7 +2,7 @@ // versions: // sqlc v1.31.1 -package database +package db import ( "database/sql" @@ -43,9 +43,9 @@ type ContinueWatchingEntry struct { AnimeID int64 `json:"anime_id"` CurrentEpisode sql.NullInt64 `json:"current_episode"` CurrentTimeSeconds float64 `json:"current_time_seconds"` - DurationSeconds sql.NullFloat64 `json:"duration_seconds"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` + DurationSeconds sql.NullFloat64 `json:"duration_seconds"` } type JikanCache struct { diff --git a/internal/db/querier.go b/internal/db/querier.go index 1e34cd0..10db62f 100644 --- a/internal/db/querier.go +++ b/internal/db/querier.go @@ -2,7 +2,7 @@ // versions: // sqlc v1.31.1 -package database +package db import ( "context" diff --git a/internal/db/queries.sql.go b/internal/db/queries.sql.go index f62d6ec..3fdb733 100644 --- a/internal/db/queries.sql.go +++ b/internal/db/queries.sql.go @@ -3,7 +3,7 @@ // sqlc v1.31.1 // source: queries.sql -package database +package db import ( "context" @@ -129,7 +129,7 @@ func (q *Queries) EnqueueAnimeFetchRetry(ctx context.Context, arg EnqueueAnimeFe } const getAnime = `-- name: GetAnime :one -SELECT id, title_original, image_url, created_at, title_english, title_japanese, airing, status, relations_synced_at FROM anime WHERE id = ? LIMIT 1 +SELECT id, title_original, image_url, created_at, title_english, title_japanese, airing, status, relations_synced_at, duration_seconds FROM anime WHERE id = ? LIMIT 1 ` func (q *Queries) GetAnime(ctx context.Context, id int64) (Anime, error) { @@ -145,6 +145,7 @@ func (q *Queries) GetAnime(ctx context.Context, id int64) (Anime, error) { &i.Airing, &i.Status, &i.RelationsSyncedAt, + &i.DurationSeconds, ) return i, err } @@ -275,7 +276,7 @@ func (q *Queries) GetContinueWatchingEntries(ctx context.Context, userID string) } const getContinueWatchingEntry = `-- name: GetContinueWatchingEntry :one -SELECT id, user_id, anime_id, current_episode, current_time_seconds, created_at, updated_at FROM continue_watching_entry +SELECT id, user_id, anime_id, current_episode, current_time_seconds, created_at, updated_at, duration_seconds FROM continue_watching_entry WHERE user_id = ? AND anime_id = ? LIMIT 1 ` @@ -295,6 +296,7 @@ func (q *Queries) GetContinueWatchingEntry(ctx context.Context, arg GetContinueW &i.CurrentTimeSeconds, &i.CreatedAt, &i.UpdatedAt, + &i.DurationSeconds, ) return i, err } @@ -405,7 +407,7 @@ WITH RECURSIVE sequel_chain AS ( WHERE r.relation_type = 'Sequel' AND sc.depth < 10 ) SELECT DISTINCT - related.id, related.title_original, related.image_url, related.created_at, related.title_english, related.title_japanese, related.airing, related.status, related.relations_synced_at, + related.id, related.title_original, related.image_url, related.created_at, related.title_english, related.title_japanese, related.airing, related.status, related.relations_synced_at, related.duration_seconds, sc.root_title AS prequel_title FROM sequel_chain sc JOIN anime related ON sc.current_id = related.id @@ -418,16 +420,17 @@ ORDER BY related.id DESC ` type GetUpcomingSeasonsRow struct { - ID int64 `json:"id"` - TitleOriginal string `json:"title_original"` - ImageUrl string `json:"image_url"` - CreatedAt time.Time `json:"created_at"` - TitleEnglish sql.NullString `json:"title_english"` - TitleJapanese sql.NullString `json:"title_japanese"` - Airing sql.NullBool `json:"airing"` - Status sql.NullString `json:"status"` - RelationsSyncedAt sql.NullTime `json:"relations_synced_at"` - PrequelTitle string `json:"prequel_title"` + ID int64 `json:"id"` + TitleOriginal string `json:"title_original"` + ImageUrl string `json:"image_url"` + CreatedAt time.Time `json:"created_at"` + TitleEnglish sql.NullString `json:"title_english"` + TitleJapanese sql.NullString `json:"title_japanese"` + Airing sql.NullBool `json:"airing"` + Status sql.NullString `json:"status"` + RelationsSyncedAt sql.NullTime `json:"relations_synced_at"` + DurationSeconds sql.NullFloat64 `json:"duration_seconds"` + PrequelTitle string `json:"prequel_title"` } func (q *Queries) GetUpcomingSeasons(ctx context.Context, userID string) ([]GetUpcomingSeasonsRow, error) { @@ -449,6 +452,7 @@ func (q *Queries) GetUpcomingSeasons(ctx context.Context, userID string) ([]GetU &i.Airing, &i.Status, &i.RelationsSyncedAt, + &i.DurationSeconds, &i.PrequelTitle, ); err != nil { return nil, err @@ -824,7 +828,7 @@ ON CONFLICT (user_id, anime_id) DO UPDATE SET current_time_seconds = excluded.current_time_seconds, duration_seconds = excluded.duration_seconds, updated_at = CURRENT_TIMESTAMP -RETURNING id, user_id, anime_id, current_episode, current_time_seconds, duration_seconds, created_at, updated_at +RETURNING id, user_id, anime_id, current_episode, current_time_seconds, created_at, updated_at, duration_seconds ` type UpsertContinueWatchingEntryParams struct { @@ -852,9 +856,9 @@ func (q *Queries) UpsertContinueWatchingEntry(ctx context.Context, arg UpsertCon &i.AnimeID, &i.CurrentEpisode, &i.CurrentTimeSeconds, - &i.DurationSeconds, &i.CreatedAt, &i.UpdatedAt, + &i.DurationSeconds, ) return i, err } diff --git a/internal/db/sqlite/sqlite.go b/internal/db/sqlite.go similarity index 82% rename from internal/db/sqlite/sqlite.go rename to internal/db/sqlite.go index ba6df68..c4d5c27 100644 --- a/internal/db/sqlite/sqlite.go +++ b/internal/db/sqlite.go @@ -1,4 +1,4 @@ -package sqlite +package db import ( "database/sql" @@ -7,7 +7,6 @@ import ( "path/filepath" _ "github.com/mattn/go-sqlite3" - "mal/internal/db" ) func Open(dbFile string) (*sql.DB, error) { @@ -36,13 +35,13 @@ func GetMigrationsDir() (string, error) { return filepath.Join(wd, "migrations"), nil } -func Init(db *sql.DB) (*database.Queries, error) { +func Init(db *sql.DB) (*Queries, error) { migrationsDir, err := GetMigrationsDir() if err != nil { return nil, err } - if err := database.RunMigrations(db, migrationsDir); err != nil { + if err := RunMigrations(db, migrationsDir); err != nil { return nil, fmt.Errorf("failed to run migrations: %w", err) } - return database.New(db), nil + return New(db), nil } diff --git a/sqlc.yaml b/sqlc.yaml index 7869068..07c0027 100644 --- a/sqlc.yaml +++ b/sqlc.yaml @@ -5,7 +5,7 @@ sql: schema: "migrations/" gen: go: - package: "database" + package: "db" out: "internal/db" emit_json_tags: true emit_prepared_queries: false