The queue lived in memory and was shared by all clients, so a restart or a finished sync cleared it. Every client now has its own queue in the new queue and queue_song tables (added to the undeployed migration 000006). The music endpoints return the queue ID in the X-Queue-Id header and expect it back. A request without an ID, or with an ended one, starts a new queue. /music/reset ends the queue and returns a new ID, and a sync ends all running queues. Ended queues are kept as history. The deprecated legacy routes without the /api/v1 prefix are removed.
81 lines
2.5 KiB
Go
81 lines
2.5 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.31.1
|
|
|
|
package repository
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
type Queue struct {
|
|
Uuid uuid.UUID `json:"uuid"`
|
|
CurrentSong int32 `json:"current_song"`
|
|
LastFetchedSongUuid uuid.UUID `json:"last_fetched_song_uuid"`
|
|
StartedAt pgtype.Timestamptz `json:"started_at"`
|
|
EndedAt pgtype.Timestamptz `json:"ended_at"`
|
|
}
|
|
|
|
type QueueSong struct {
|
|
QueueUuid uuid.UUID `json:"queue_uuid"`
|
|
SongNo int32 `json:"song_no"`
|
|
SongUuid uuid.UUID `json:"song_uuid"`
|
|
SoundtrackName string `json:"soundtrack_name"`
|
|
SongName string `json:"song_name"`
|
|
AddedAt pgtype.Timestamptz `json:"added_at"`
|
|
}
|
|
|
|
type Session struct {
|
|
Token string `json:"token"`
|
|
IpAddress string `json:"ip_address"`
|
|
UserAgent string `json:"user_agent"`
|
|
ClientType *string `json:"client_type"`
|
|
ExpiresAt pgtype.Timestamptz `json:"expires_at"`
|
|
CreatedAt pgtype.Timestamptz `json:"created_at"`
|
|
}
|
|
|
|
type Song struct {
|
|
SoundtrackID int32 `json:"soundtrack_id"`
|
|
SongName string `json:"song_name"`
|
|
Path string `json:"path"`
|
|
TimesPlayed int32 `json:"times_played"`
|
|
Hash string `json:"hash"`
|
|
FileName *string `json:"file_name"`
|
|
Uuid uuid.UUID `json:"uuid"`
|
|
SoundtrackUuid uuid.UUID `json:"soundtrack_uuid"`
|
|
}
|
|
|
|
type SongList struct {
|
|
MatchDate time.Time `json:"match_date"`
|
|
MatchID int32 `json:"match_id"`
|
|
SongNo int32 `json:"song_no"`
|
|
SoundtrackName *string `json:"soundtrack_name"`
|
|
SongName *string `json:"song_name"`
|
|
}
|
|
|
|
type Soundtrack struct {
|
|
ID int32 `json:"id"`
|
|
SoundtrackName string `json:"soundtrack_name"`
|
|
Added time.Time `json:"added"`
|
|
Deleted *time.Time `json:"deleted"`
|
|
LastChanged *time.Time `json:"last_changed"`
|
|
Path string `json:"path"`
|
|
TimesPlayed int32 `json:"times_played"`
|
|
LastPlayed *time.Time `json:"last_played"`
|
|
NumberOfSongs int32 `json:"number_of_songs"`
|
|
Hash string `json:"hash"`
|
|
Uuid uuid.UUID `json:"uuid"`
|
|
Fingerprint string `json:"fingerprint"`
|
|
}
|
|
|
|
type Vgmq struct {
|
|
SongNo int32 `json:"song_no"`
|
|
Path *string `json:"path"`
|
|
Clue *string `json:"clue"`
|
|
Answered bool `json:"answered"`
|
|
Answer *string `json:"answer"`
|
|
}
|