refactor(watchlist): sortEntries, null checks, and beginTx

This commit is contained in:
2026-04-20 01:42:10 +02:00
parent ffd67338c3
commit f2554152fa
3 changed files with 60 additions and 34 deletions

View File

@@ -1,17 +1,43 @@
package database
import "database/sql"
import (
"context"
"database/sql"
"errors"
"fmt"
)
func NullStringOr(n sql.NullString, fallback string) string {
if n.Valid && n.String != "" {
return n.String
}
return fallback
}
func DisplayTitle(titleEnglish, titleJapanese sql.NullString, titleOriginal string) string {
if titleEnglish.Valid && titleEnglish.String != "" {
return titleEnglish.String
}
if titleJapanese.Valid && titleJapanese.String != "" {
return titleJapanese.String
}
return titleOriginal
return NullStringOr(titleEnglish, NullStringOr(titleJapanese, titleOriginal))
}
func (r GetUserWatchListRow) DisplayTitle() string {
return DisplayTitle(r.TitleEnglish, r.TitleJapanese, r.TitleOriginal)
}
func BoolPtr(b sql.NullBool) *bool {
if !b.Valid {
return nil
}
return &b.Bool
}
func BeginTx(ctx context.Context, db *sql.DB) (*Queries, *sql.Tx, error) {
if db == nil {
return nil, nil, errors.New("database unavailable")
}
tx, err := db.BeginTx(ctx, nil)
if err != nil {
return nil, nil, fmt.Errorf("failed to begin transaction: %w", err)
}
return New(tx), tx, nil
}