refactor(services): accept optional libraryID for All Libraries support

- dashboard_service.go: Change libraryID parameter from uuid.UUID to
  pgtype.UUID across GetDashboardSections, GetDashboardPreferences,
  and all helper methods. pgtype.UUID{Valid: false} now signals
  "no library filter" (All Libraries), which gets passed through
  to sqlc.narg() in the SQL layer.

- series_service.go: Drop libraryID parameter from GetSeriesBooks
  entirely. Series are not library-specific — all books in a series
  are shown regardless of which library they belong to.
This commit is contained in:
2026-05-18 17:52:24 -04:00
parent e7a4f0f758
commit 6a352a6afb
2 changed files with 29 additions and 34 deletions
+10 -16
View File
@@ -5,7 +5,6 @@ import (
"bookhoard/internal/utils"
"context"
"github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype"
)
@@ -25,18 +24,16 @@ func NewSeriesService(db *database.Queries) *SeriesService {
return &SeriesService{db: db}
}
func (s *SeriesService) GetSeriesPage(ctx context.Context, libraryID uuid.UUID, limit, offset int) ([]SeriesInfo, int, error) {
libUUID := pgtype.UUID{Bytes: libraryID, Valid: true}
totalCount, err := s.db.GetDistinctSeriesCount(ctx, libUUID)
func (s *SeriesService) GetSeriesPage(ctx context.Context, libraryID pgtype.UUID, limit, offset int) ([]SeriesInfo, int, error) {
totalCount, err := s.db.GetDistinctSeriesCount(ctx, libraryID)
if err != nil {
return nil, 0, err
}
rows, err := s.db.GetDistinctSeries(ctx, database.GetDistinctSeriesParams{
LibraryID: libUUID,
Limit: int32(limit),
Offset: int32(offset),
LibraryID: libraryID,
Limit: pgtype.Int4{Int32: int32(limit), Valid: true},
Offset: pgtype.Int4{Int32: int32(offset), Valid: true},
})
if err != nil {
return nil, 0, err
@@ -88,11 +85,11 @@ func (s *SeriesService) GetSeriesPage(ctx context.Context, libraryID uuid.UUID,
return series, int(totalCount), nil
}
func (s *SeriesService) GetSeriesCovers(ctx context.Context, libraryID uuid.UUID, seriesName string, limit int) ([]string, error) {
func (s *SeriesService) GetSeriesCovers(ctx context.Context, libraryID pgtype.UUID, seriesName string, limit int) ([]string, error) {
covers, err := s.db.GetSeriesCovers(ctx, database.GetSeriesCoversParams{
LibraryID: pgtype.UUID{Bytes: libraryID, Valid: true},
LibraryID: libraryID,
Series: pgtype.Text{String: seriesName, Valid: true},
Limit: int32(limit),
Limit: pgtype.Int4{Int32: int32(limit), Valid: true},
})
if err != nil {
return nil, err
@@ -109,11 +106,8 @@ func (s *SeriesService) GetSeriesCovers(ctx context.Context, libraryID uuid.UUID
return paths, nil
}
func (s *SeriesService) GetSeriesBooks(ctx context.Context, libraryID uuid.UUID, seriesName string) ([]database.MediaItems, error) {
return s.db.GetSeriesBooks(ctx, database.GetSeriesBooksParams{
LibraryID: pgtype.UUID{Bytes: libraryID, Valid: true},
Series: pgtype.Text{String: seriesName, Valid: true},
})
func (s *SeriesService) GetSeriesBooks(ctx context.Context, seriesName string) ([]database.MediaItems, error) {
return s.db.GetSeriesBooks(ctx, pgtype.Text{String: seriesName, Valid: true})
}
func continueSeriesRowToMediaItems(row database.GetContinueSeriesItemsRow) database.MediaItems {