App v0.2.26 and gateway 0.1.20
Client: seek controls, Bazarr subtitle download and cast panel in the player; MDBList ratings strip; episode and schedule detail pages; series pace estimate; what's new panel; install-permission onboarding step; synced per-profile preferences; Emby outage banner. Gateway: rebuilt admin console (one fragment per page), preference history and restore, merged Continue Watching, Emby health probe, subtitle selection and Bazarr download, structured request logging with per-request identity, and embedded build version. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2675e6d82b
commit
4a4df7a73c
@@ -275,6 +275,38 @@ func (s *Store) LibraryGenres(
|
||||
return out, rows.Err()
|
||||
}
|
||||
|
||||
// SeriesRef is the minimum needed to link an outside catalogue's show — Sonarr's, in
|
||||
// practice — to the Emby series the library holds, so a card built from that catalogue
|
||||
// can open the show's own page. Year is 0 when Emby does not know it.
|
||||
type SeriesRef struct {
|
||||
ID string
|
||||
Name string
|
||||
Year int
|
||||
}
|
||||
|
||||
// SeriesRefs lists every imported series. The catalogue is a household's, not a
|
||||
// provider's: a few hundred rows of three short columns, which is why this reads them
|
||||
// all rather than querying per title.
|
||||
func (s *Store) SeriesRefs(ctx context.Context) ([]SeriesRef, error) {
|
||||
rows, err := s.pool.Query(ctx, `
|
||||
SELECT id, name, COALESCE(production_year, 0)
|
||||
FROM library_items
|
||||
WHERE type = 'Series'`)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("store: series refs: %w", err)
|
||||
}
|
||||
defer rows.Close()
|
||||
out := []SeriesRef{}
|
||||
for rows.Next() {
|
||||
var ref SeriesRef
|
||||
if err := rows.Scan(&ref.ID, &ref.Name, &ref.Year); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
out = append(out, ref)
|
||||
}
|
||||
return out, rows.Err()
|
||||
}
|
||||
|
||||
func lowerStrings(values []string) []string {
|
||||
out := make([]string, 0, len(values))
|
||||
for _, value := range values {
|
||||
|
||||
Reference in New Issue
Block a user