test-go / test (push) Failing after 44s
test-web / test (push) Successful in 49s
test-go / integration (push) Failing after 2m42s
release / Build + push container image (push) Canceled after 0s
release / Verify release artifacts (tag releases only) (push) Canceled after 0s
release / Build signed APK (releases and dev) (push) Canceled after 4m8s
Rule 25: the fingerprinting knobs move out of source into a DB-backed singleton (migration 0061), edited from a card on the Duplicates page and shared live with the scanner, the backfill and the duplicate sweep through one service instance, so a save needs no restart. The length is the knob that can silently break the library: prints taken at two lengths never match. Each track_fingerprints row now records the length it was taken at, and every reader filters on the current one — the backfill treats another length as stale, the gauge counts it pending, the sweep never streams it. Equivalent to a version bump, except that setting the length back makes rows not yet redone current again. The card warns before a length change re-fingerprints the library. Off stops every decode: the scan takes only the stream hash (a demux, and what recognises a moved file) and stores nothing, dropping a changed file's stale row; the backfill idles. A save also makes a sweep due, since a new threshold or length changes what the same prints group into, and the sweep interval gains slack so an hourly interval on an hourly tick doesn't skip every other tick. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SQ31KQpYbStyK5y58UmPLH
770 lines
18 KiB
Go
770 lines
18 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.31.1
|
|
|
|
package dbq
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"fmt"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
type LidarrQuarantineActionKind string
|
|
|
|
const (
|
|
LidarrQuarantineActionKindResolved LidarrQuarantineActionKind = "resolved"
|
|
LidarrQuarantineActionKindDeletedFile LidarrQuarantineActionKind = "deleted_file"
|
|
LidarrQuarantineActionKindDeletedViaLidarr LidarrQuarantineActionKind = "deleted_via_lidarr"
|
|
)
|
|
|
|
func (e *LidarrQuarantineActionKind) Scan(src interface{}) error {
|
|
switch s := src.(type) {
|
|
case []byte:
|
|
*e = LidarrQuarantineActionKind(s)
|
|
case string:
|
|
*e = LidarrQuarantineActionKind(s)
|
|
default:
|
|
return fmt.Errorf("unsupported scan type for LidarrQuarantineActionKind: %T", src)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type NullLidarrQuarantineActionKind struct {
|
|
LidarrQuarantineActionKind LidarrQuarantineActionKind
|
|
Valid bool // Valid is true if LidarrQuarantineActionKind is not NULL
|
|
}
|
|
|
|
// Scan implements the Scanner interface.
|
|
func (ns *NullLidarrQuarantineActionKind) Scan(value interface{}) error {
|
|
if value == nil {
|
|
ns.LidarrQuarantineActionKind, ns.Valid = "", false
|
|
return nil
|
|
}
|
|
ns.Valid = true
|
|
return ns.LidarrQuarantineActionKind.Scan(value)
|
|
}
|
|
|
|
// Value implements the driver Valuer interface.
|
|
func (ns NullLidarrQuarantineActionKind) Value() (driver.Value, error) {
|
|
if !ns.Valid {
|
|
return nil, nil
|
|
}
|
|
return string(ns.LidarrQuarantineActionKind), nil
|
|
}
|
|
|
|
type LidarrQuarantineReason string
|
|
|
|
const (
|
|
LidarrQuarantineReasonBadRip LidarrQuarantineReason = "bad_rip"
|
|
LidarrQuarantineReasonWrongFile LidarrQuarantineReason = "wrong_file"
|
|
LidarrQuarantineReasonWrongTags LidarrQuarantineReason = "wrong_tags"
|
|
LidarrQuarantineReasonDuplicate LidarrQuarantineReason = "duplicate"
|
|
LidarrQuarantineReasonOther LidarrQuarantineReason = "other"
|
|
)
|
|
|
|
func (e *LidarrQuarantineReason) Scan(src interface{}) error {
|
|
switch s := src.(type) {
|
|
case []byte:
|
|
*e = LidarrQuarantineReason(s)
|
|
case string:
|
|
*e = LidarrQuarantineReason(s)
|
|
default:
|
|
return fmt.Errorf("unsupported scan type for LidarrQuarantineReason: %T", src)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type NullLidarrQuarantineReason struct {
|
|
LidarrQuarantineReason LidarrQuarantineReason
|
|
Valid bool // Valid is true if LidarrQuarantineReason is not NULL
|
|
}
|
|
|
|
// Scan implements the Scanner interface.
|
|
func (ns *NullLidarrQuarantineReason) Scan(value interface{}) error {
|
|
if value == nil {
|
|
ns.LidarrQuarantineReason, ns.Valid = "", false
|
|
return nil
|
|
}
|
|
ns.Valid = true
|
|
return ns.LidarrQuarantineReason.Scan(value)
|
|
}
|
|
|
|
// Value implements the driver Valuer interface.
|
|
func (ns NullLidarrQuarantineReason) Value() (driver.Value, error) {
|
|
if !ns.Valid {
|
|
return nil, nil
|
|
}
|
|
return string(ns.LidarrQuarantineReason), nil
|
|
}
|
|
|
|
type LidarrRequestKind string
|
|
|
|
const (
|
|
LidarrRequestKindArtist LidarrRequestKind = "artist"
|
|
LidarrRequestKindAlbum LidarrRequestKind = "album"
|
|
LidarrRequestKindTrack LidarrRequestKind = "track"
|
|
)
|
|
|
|
func (e *LidarrRequestKind) Scan(src interface{}) error {
|
|
switch s := src.(type) {
|
|
case []byte:
|
|
*e = LidarrRequestKind(s)
|
|
case string:
|
|
*e = LidarrRequestKind(s)
|
|
default:
|
|
return fmt.Errorf("unsupported scan type for LidarrRequestKind: %T", src)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type NullLidarrRequestKind struct {
|
|
LidarrRequestKind LidarrRequestKind
|
|
Valid bool // Valid is true if LidarrRequestKind is not NULL
|
|
}
|
|
|
|
// Scan implements the Scanner interface.
|
|
func (ns *NullLidarrRequestKind) Scan(value interface{}) error {
|
|
if value == nil {
|
|
ns.LidarrRequestKind, ns.Valid = "", false
|
|
return nil
|
|
}
|
|
ns.Valid = true
|
|
return ns.LidarrRequestKind.Scan(value)
|
|
}
|
|
|
|
// Value implements the driver Valuer interface.
|
|
func (ns NullLidarrRequestKind) Value() (driver.Value, error) {
|
|
if !ns.Valid {
|
|
return nil, nil
|
|
}
|
|
return string(ns.LidarrRequestKind), nil
|
|
}
|
|
|
|
type LidarrRequestStatus string
|
|
|
|
const (
|
|
LidarrRequestStatusPending LidarrRequestStatus = "pending"
|
|
LidarrRequestStatusApproved LidarrRequestStatus = "approved"
|
|
LidarrRequestStatusRejected LidarrRequestStatus = "rejected"
|
|
LidarrRequestStatusCompleted LidarrRequestStatus = "completed"
|
|
LidarrRequestStatusFailed LidarrRequestStatus = "failed"
|
|
)
|
|
|
|
func (e *LidarrRequestStatus) Scan(src interface{}) error {
|
|
switch s := src.(type) {
|
|
case []byte:
|
|
*e = LidarrRequestStatus(s)
|
|
case string:
|
|
*e = LidarrRequestStatus(s)
|
|
default:
|
|
return fmt.Errorf("unsupported scan type for LidarrRequestStatus: %T", src)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type NullLidarrRequestStatus struct {
|
|
LidarrRequestStatus LidarrRequestStatus
|
|
Valid bool // Valid is true if LidarrRequestStatus is not NULL
|
|
}
|
|
|
|
// Scan implements the Scanner interface.
|
|
func (ns *NullLidarrRequestStatus) Scan(value interface{}) error {
|
|
if value == nil {
|
|
ns.LidarrRequestStatus, ns.Valid = "", false
|
|
return nil
|
|
}
|
|
ns.Valid = true
|
|
return ns.LidarrRequestStatus.Scan(value)
|
|
}
|
|
|
|
// Value implements the driver Valuer interface.
|
|
func (ns NullLidarrRequestStatus) Value() (driver.Value, error) {
|
|
if !ns.Valid {
|
|
return nil, nil
|
|
}
|
|
return string(ns.LidarrRequestStatus), nil
|
|
}
|
|
|
|
type Album struct {
|
|
ID pgtype.UUID
|
|
Title string
|
|
SortTitle string
|
|
ArtistID pgtype.UUID
|
|
ReleaseDate pgtype.Date
|
|
Mbid *string
|
|
CoverArtPath *string
|
|
CreatedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
CoverArtSource *string
|
|
CoverArtSourcesVersion int32
|
|
}
|
|
|
|
type Artist struct {
|
|
ID pgtype.UUID
|
|
Name string
|
|
SortName string
|
|
Mbid *string
|
|
CreatedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
ArtistThumbPath *string
|
|
ArtistFanartPath *string
|
|
ArtistArtSource *string
|
|
ArtistArtSourcesVersion int32
|
|
}
|
|
|
|
type ArtistSimilarity struct {
|
|
ArtistAID pgtype.UUID
|
|
ArtistBID pgtype.UUID
|
|
Score float64
|
|
Source string
|
|
FetchedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type ArtistSimilarityUnmatched struct {
|
|
SeedArtistID pgtype.UUID
|
|
CandidateMbid string
|
|
CandidateName string
|
|
Score float64
|
|
Source string
|
|
FetchedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type AuditLog struct {
|
|
ID pgtype.UUID
|
|
ActorID pgtype.UUID
|
|
TargetID pgtype.UUID
|
|
Action string
|
|
Metadata []byte
|
|
CreatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type CandidateArtistTag struct {
|
|
CandidateMbid string
|
|
Tag string
|
|
Weight float64
|
|
}
|
|
|
|
type CandidateArtistTagState struct {
|
|
CandidateMbid string
|
|
TagSource string
|
|
TagSourcesVersion int32
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type ContextualLike struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
TrackID pgtype.UUID
|
|
LikedAt pgtype.Timestamptz
|
|
DeletedAt pgtype.Timestamptz
|
|
SessionVector []byte
|
|
SessionID pgtype.UUID
|
|
}
|
|
|
|
type CoverArtProviderSetting struct {
|
|
ProviderID string
|
|
Enabled bool
|
|
ApiKey *string
|
|
DisplayOrder int32
|
|
CreatedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type CoverArtSourcesMetum struct {
|
|
ID bool
|
|
CurrentVersion int32
|
|
LastRegisteredProvidersHash string
|
|
}
|
|
|
|
type DiagnosticEvent struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
ClientID string
|
|
AppVersion *string
|
|
OsVersion *string
|
|
Kind string
|
|
Payload []byte
|
|
OccurredAt pgtype.Timestamptz
|
|
ReceivedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type DiscoverTuning struct {
|
|
Singleton bool
|
|
TagOverlapWeight float64
|
|
SnoozeDays float64
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type DuplicateGroup struct {
|
|
ID pgtype.UUID
|
|
MemberKey string
|
|
Tier string
|
|
WorstBitErrorRate *float32
|
|
Status string
|
|
DetectedAt pgtype.Timestamptz
|
|
LastSeenSweepID pgtype.UUID
|
|
ResolvedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type DuplicateGroupMember struct {
|
|
GroupID pgtype.UUID
|
|
TrackID pgtype.UUID
|
|
}
|
|
|
|
type DuplicateSweep struct {
|
|
ID pgtype.UUID
|
|
StartedAt pgtype.Timestamptz
|
|
FinishedAt pgtype.Timestamptz
|
|
Candidates *int32
|
|
GroupsFound *int32
|
|
OversizeClusters *int32
|
|
ErrorMessage *string
|
|
}
|
|
|
|
type FingerprintSetting struct {
|
|
ID bool
|
|
Enabled bool
|
|
ChromaprintLengthSec int32
|
|
AcousticMaxBitErrorRate float64
|
|
BackfillConcurrency int32
|
|
SweepIntervalHours int32
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type GeneralLike struct {
|
|
UserID pgtype.UUID
|
|
TrackID pgtype.UUID
|
|
LikedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type GeneralLikesAlbum struct {
|
|
UserID pgtype.UUID
|
|
AlbumID pgtype.UUID
|
|
LikedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type GeneralLikesArtist struct {
|
|
UserID pgtype.UUID
|
|
ArtistID pgtype.UUID
|
|
LikedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type LibraryChange struct {
|
|
ID int64
|
|
EntityType string
|
|
EntityID string
|
|
Op string
|
|
ChangedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type LidarrConfig struct {
|
|
ID int16
|
|
Enabled bool
|
|
BaseUrl *string
|
|
ApiKey *string
|
|
DefaultQualityProfileID *int32
|
|
DefaultRootFolderPath *string
|
|
CreatedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
DefaultMetadataProfileID *int32
|
|
}
|
|
|
|
type LidarrQuarantine struct {
|
|
UserID pgtype.UUID
|
|
TrackID pgtype.UUID
|
|
Reason LidarrQuarantineReason
|
|
Notes *string
|
|
CreatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type LidarrQuarantineAction struct {
|
|
ID pgtype.UUID
|
|
TrackID pgtype.UUID
|
|
TrackTitle string
|
|
ArtistName string
|
|
AlbumTitle *string
|
|
Action LidarrQuarantineActionKind
|
|
AdminID pgtype.UUID
|
|
LidarrAlbumMbid *string
|
|
AffectedUsers int32
|
|
CreatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type LidarrRequest struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
Status LidarrRequestStatus
|
|
Kind LidarrRequestKind
|
|
LidarrArtistMbid string
|
|
LidarrAlbumMbid *string
|
|
LidarrTrackMbid *string
|
|
ArtistName string
|
|
AlbumTitle *string
|
|
TrackTitle *string
|
|
QualityProfileID *int32
|
|
RootFolderPath *string
|
|
DecidedAt pgtype.Timestamptz
|
|
DecidedBy pgtype.UUID
|
|
Notes *string
|
|
CompletedAt pgtype.Timestamptz
|
|
MatchedTrackID pgtype.UUID
|
|
MatchedAlbumID pgtype.UUID
|
|
MatchedArtistID pgtype.UUID
|
|
RequestedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
LidarrAddConfirmedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type MissingReacquisition struct {
|
|
AlbumID pgtype.UUID
|
|
Attempts int32
|
|
LastAttemptAt pgtype.Timestamptz
|
|
LastRequestID pgtype.UUID
|
|
GaveUpAt pgtype.Timestamptz
|
|
CreatedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type NetworkSetting struct {
|
|
ID bool
|
|
TrustedProxyHops int32
|
|
}
|
|
|
|
type PasswordReset struct {
|
|
Token string
|
|
UserID pgtype.UUID
|
|
CreatedAt pgtype.Timestamptz
|
|
ExpiresAt pgtype.Timestamptz
|
|
UsedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type PlayEvent struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
TrackID pgtype.UUID
|
|
SessionID pgtype.UUID
|
|
StartedAt pgtype.Timestamptz
|
|
EndedAt pgtype.Timestamptz
|
|
DurationPlayedMs *int32
|
|
CompletionRatio *float64
|
|
WasSkipped bool
|
|
ClientID *string
|
|
SessionVectorAtPlay []byte
|
|
ScrobbledAt pgtype.Timestamptz
|
|
Source *string
|
|
PickKind *string
|
|
DeviceClass *string
|
|
}
|
|
|
|
type PlaySession struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
StartedAt pgtype.Timestamptz
|
|
EndedAt pgtype.Timestamptz
|
|
LastEventAt pgtype.Timestamptz
|
|
TrackCount int32
|
|
ClientID *string
|
|
}
|
|
|
|
type PlaybackError struct {
|
|
ID pgtype.UUID
|
|
TrackID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
ClientID string
|
|
Kind string
|
|
Detail *string
|
|
OccurredAt pgtype.Timestamptz
|
|
ResolvedAt pgtype.Timestamptz
|
|
ResolvedBy pgtype.UUID
|
|
Resolution *string
|
|
}
|
|
|
|
type Playlist struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
Name string
|
|
Description string
|
|
IsPublic bool
|
|
CoverPath *string
|
|
TrackCount int32
|
|
DurationSec int32
|
|
CreatedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
Kind string
|
|
SystemVariant *string
|
|
SeedArtistID pgtype.UUID
|
|
}
|
|
|
|
type PlaylistTrack struct {
|
|
PlaylistID pgtype.UUID
|
|
Position int32
|
|
TrackID pgtype.UUID
|
|
Title string
|
|
ArtistName string
|
|
AlbumTitle string
|
|
DurationSec int32
|
|
AddedAt pgtype.Timestamptz
|
|
PickKind *string
|
|
}
|
|
|
|
type ReacquisitionSetting struct {
|
|
ID bool
|
|
Enabled bool
|
|
GraceHours int32
|
|
BackoffBaseHours int32
|
|
BackoffMaxHours int32
|
|
MaxAttempts int32
|
|
MaxPerPass int32
|
|
AutoApprove bool
|
|
}
|
|
|
|
type RecommendationTuningAudit struct {
|
|
ID int64
|
|
ChangedAt pgtype.Timestamptz
|
|
Scope string
|
|
Action string
|
|
Changes []byte
|
|
}
|
|
|
|
type RecommendationWeightProfile struct {
|
|
Profile string
|
|
BaseWeight float64
|
|
LikeBoost float64
|
|
RecencyWeight float64
|
|
SkipPenalty float64
|
|
JitterMagnitude float64
|
|
ContextWeight float64
|
|
SimilarityWeight float64
|
|
TasteWeight float64
|
|
UpdatedAt pgtype.Timestamptz
|
|
ContextTimeWeight float64
|
|
}
|
|
|
|
type RegistrationSetting struct {
|
|
ID bool
|
|
Mode string
|
|
}
|
|
|
|
type ScanRun struct {
|
|
ID pgtype.UUID
|
|
StartedAt pgtype.Timestamptz
|
|
FinishedAt pgtype.Timestamptz
|
|
Library []byte
|
|
MbidBackfill []byte
|
|
CoverEnrich []byte
|
|
ErrorMessage *string
|
|
ArtistArtEnrich []byte
|
|
}
|
|
|
|
type ScrobbleQueue struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
PlayEventID pgtype.UUID
|
|
Status string
|
|
Attempts int32
|
|
NextAttemptAt pgtype.Timestamptz
|
|
LastError *string
|
|
EnqueuedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type Session struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
TokenHash []byte
|
|
UserAgent string
|
|
CreatedAt pgtype.Timestamptz
|
|
LastSeenAt pgtype.Timestamptz
|
|
CreatedIp string
|
|
LastIp string
|
|
}
|
|
|
|
type SkipEvent struct {
|
|
ID pgtype.UUID
|
|
UserID pgtype.UUID
|
|
TrackID pgtype.UUID
|
|
SessionID pgtype.UUID
|
|
SkippedAt pgtype.Timestamptz
|
|
PositionMs int32
|
|
}
|
|
|
|
type SmtpConfig struct {
|
|
ID bool
|
|
Enabled bool
|
|
Host string
|
|
Port int32
|
|
Username string
|
|
Password string
|
|
FromAddress string
|
|
FromName string
|
|
UseTls bool
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type SuggestionSnooze struct {
|
|
UserID pgtype.UUID
|
|
CandidateMbid string
|
|
CandidateName string
|
|
SnoozedUntil pgtype.Timestamptz
|
|
CreatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type SystemPlaylistRotationState struct {
|
|
UserID pgtype.UUID
|
|
PlaylistKind string
|
|
PlayedTrackIds []pgtype.UUID
|
|
RotationStartedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type SystemPlaylistRun struct {
|
|
UserID pgtype.UUID
|
|
LastRunAt pgtype.Timestamptz
|
|
LastRunDate pgtype.Date
|
|
InFlight bool
|
|
LastError *string
|
|
}
|
|
|
|
type TagProviderSetting struct {
|
|
ProviderID string
|
|
Enabled bool
|
|
ApiKey *string
|
|
DisplayOrder int32
|
|
CreatedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type TagSourcesMetum struct {
|
|
ID bool
|
|
CurrentVersion int32
|
|
LastRegisteredProvidersHash string
|
|
}
|
|
|
|
type TasteProfileArtist struct {
|
|
UserID pgtype.UUID
|
|
ArtistID pgtype.UUID
|
|
Weight float64
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type TasteProfileEra struct {
|
|
UserID pgtype.UUID
|
|
Era string
|
|
Weight float64
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type TasteProfileMood struct {
|
|
UserID pgtype.UUID
|
|
Mood string
|
|
Weight float64
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type TasteProfileTag struct {
|
|
UserID pgtype.UUID
|
|
Tag string
|
|
Weight float64
|
|
UpdatedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type TasteTuning struct {
|
|
Singleton bool
|
|
HalfLifeDays float64
|
|
EngagementHardSkip float64
|
|
EngagementNeutral float64
|
|
EngagementFull float64
|
|
UpdatedAt pgtype.Timestamptz
|
|
EnrichedTagScale float64
|
|
EraScale float64
|
|
MoodScale float64
|
|
}
|
|
|
|
type Track struct {
|
|
ID pgtype.UUID
|
|
Title string
|
|
AlbumID pgtype.UUID
|
|
ArtistID pgtype.UUID
|
|
TrackNumber *int32
|
|
DiscNumber *int32
|
|
DurationMs int32
|
|
FilePath string
|
|
FileSize int64
|
|
FileFormat string
|
|
Bitrate *int32
|
|
Mbid *string
|
|
Genre *string
|
|
AddedAt pgtype.Timestamptz
|
|
UpdatedAt pgtype.Timestamptz
|
|
TagSource *string
|
|
TagSourcesVersion int32
|
|
TagReadVersion int16
|
|
MissingSince pgtype.Timestamptz
|
|
}
|
|
|
|
type TrackFingerprint struct {
|
|
TrackID pgtype.UUID
|
|
AudioStreamSha256 []byte
|
|
Chromaprint []int32
|
|
FingerprintVersion int16
|
|
ComputedAt pgtype.Timestamptz
|
|
ChromaprintLengthSec int32
|
|
}
|
|
|
|
type TrackSimilarity struct {
|
|
TrackAID pgtype.UUID
|
|
TrackBID pgtype.UUID
|
|
Score float64
|
|
Source string
|
|
FetchedAt pgtype.Timestamptz
|
|
}
|
|
|
|
type TrackTag struct {
|
|
TrackID pgtype.UUID
|
|
Tag string
|
|
Weight float64
|
|
}
|
|
|
|
type User struct {
|
|
ID pgtype.UUID
|
|
Username string
|
|
PasswordHash string
|
|
ApiToken string
|
|
IsAdmin bool
|
|
CreatedAt pgtype.Timestamptz
|
|
SubsonicPassword *string
|
|
ListenbrainzToken *string
|
|
ListenbrainzEnabled bool
|
|
DisplayName *string
|
|
AutoApproveRequests bool
|
|
Email *string
|
|
Timezone string
|
|
TimezoneUpdatedAt pgtype.Timestamptz
|
|
DebugModeEnabled bool
|
|
}
|
|
|
|
type UserInvite struct {
|
|
Token string
|
|
InvitedBy pgtype.UUID
|
|
Note *string
|
|
CreatedAt pgtype.Timestamptz
|
|
ExpiresAt pgtype.Timestamptz
|
|
RedeemedAt pgtype.Timestamptz
|
|
RedeemedBy pgtype.UUID
|
|
}
|
|
|
|
type YouMightLikeAlbum struct {
|
|
UserID pgtype.UUID
|
|
AlbumID pgtype.UUID
|
|
Rank int32
|
|
BuiltAt pgtype.Timestamptz
|
|
}
|
|
|
|
type YouMightLikeArtist struct {
|
|
UserID pgtype.UUID
|
|
ArtistID pgtype.UUID
|
|
Rank int32
|
|
BuiltAt pgtype.Timestamptz
|
|
}
|