Files
silo-server/internal/models/library_collection.go
T

100 lines
2.6 KiB
Go

package models
import (
"encoding/json"
"time"
)
// LibraryCollection is an admin-managed collection scoped to one or more libraries.
type LibraryCollection struct {
ID string
LibraryID int
LibraryIDs []int
Slug string
Title string
Description string
CollectionType string
Visibility string
SortOrder int
GroupID *string
Featured bool
PosterURL string
BackdropURL string
PosterThumbhash string
BackdropThumbhash string
PosterAutoGenerated bool
SourceURL string
QueryDefinition json.RawMessage
SortConfig json.RawMessage
SourceConfig json.RawMessage
ManagementMode string
ManagementSource string
ManagementKey string
LastSyncStatus string
LastSyncMessage string
LastSyncAt *time.Time
SyncSchedule *string
NextSyncAt *time.Time
ItemCount int
CreatedAt time.Time
UpdatedAt time.Time
}
type LibraryCollectionGroupKind string
const (
GroupKindRegular LibraryCollectionGroupKind = "regular"
GroupKindUserCollections LibraryCollectionGroupKind = "user_collections"
)
type GroupSortMode string
const (
GroupSortManual GroupSortMode = "manual"
GroupSortNameAsc GroupSortMode = "name_asc"
GroupSortNameDesc GroupSortMode = "name_desc"
GroupSortRecent GroupSortMode = "recent"
GroupSortMostItems GroupSortMode = "most_items"
)
// LibraryCollectionGroup is a per-library bucket that groups collections in the
// gallery view. Collections without a group_id fall into the implicit
// "Ungrouped" section that lives outside this table.
type LibraryCollectionGroup struct {
ID string
LibraryID int
Name string
Slug string
Kind LibraryCollectionGroupKind
DefaultSortMode GroupSortMode
SortOrder int
CreatedAt time.Time
UpdatedAt time.Time
}
// LibraryCollectionItem is a resolved membership entry for a library collection.
type LibraryCollectionItem struct {
CollectionID string
MediaItemID string
Position int
SourceRank int
CreatedAt time.Time
UpdatedAt time.Time
}
// LibraryCollectionSyncRun captures the outcome of a collection sync/import run.
type LibraryCollectionSyncRun struct {
ID string
CollectionID string
Status string
Message string
ItemsAdded int
ItemsRemoved int
ItemsMatched int
ItemsUnmatched int
Warnings json.RawMessage
StartedAt *time.Time
CompletedAt *time.Time
CreatedAt time.Time
}