models

package
v0.1.32 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 24, 2025 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Album

type Album struct {
	ID             int32          `json:"id"`
	MbzID          *uuid.UUID     `json:"musicbrainz_id"`
	Title          string         `json:"title"`
	Image          *uuid.UUID     `json:"image"`
	Artists        []SimpleArtist `json:"artists"`
	VariousArtists bool           `json:"is_various_artists"`
	ListenCount    int64          `json:"listen_count"`
	TimeListened   int64          `json:"time_listened"`
	FirstListen    int64          `json:"first_listen"`
	// Spotify metadata
	Genres               []string `json:"genres,omitempty"`
	ReleaseDate          string   `json:"release_date,omitempty"`
	Popularity           int      `json:"popularity,omitempty"`
	SpotifyID            string   `json:"spotify_id,omitempty"`
	Label                string   `json:"label,omitempty"`
	ReleaseDatePrecision string   `json:"release_date_precision,omitempty"`
}

type Alias

type Alias struct {
	ID      int32  `json:"id,omitempty"`
	Alias   string `json:"alias"`
	Source  string `json:"source"`
	Primary bool   `json:"is_primary"`
}

type ApiKey

type ApiKey struct {
	ID        int32     `json:"id"`
	Key       string    `json:"key"`
	Label     string    `json:"label"`
	UserID    int32     `json:"user_id"`
	CreatedAt time.Time `json:"created_at"`
}

type Artist

type Artist struct {
	ID           int32      `json:"id"`
	MbzID        *uuid.UUID `json:"musicbrainz_id"`
	Name         string     `json:"name"`
	Aliases      []string   `json:"aliases"`
	Image        *uuid.UUID `json:"image"`
	ListenCount  int64      `json:"listen_count"`
	TimeListened int64      `json:"time_listened"`
	FirstListen  int64      `json:"first_listen"`
	IsPrimary    bool       `json:"is_primary,omitempty"`
	// Spotify metadata
	Genres     []string `json:"genres,omitempty"`
	Bio        string   `json:"bio,omitempty"`
	Popularity int      `json:"popularity,omitempty"`
	SpotifyID  string   `json:"spotify_id,omitempty"`
	Followers  int      `json:"followers,omitempty"`
}

type ArtistWithFullAliases

type ArtistWithFullAliases struct {
	ID           int32      `json:"id"`
	MbzID        *uuid.UUID `json:"musicbrainz_id"`
	Name         string     `json:"name"`
	Aliases      []Alias    `json:"aliases"`
	Image        *uuid.UUID `json:"image"`
	ImageSource  string     `json:"image_source,omitempty"`
	ListenCount  int64      `json:"listen_count"`
	TimeListened int64      `json:"time_listened"`
	FirstListen  int64      `json:"first_listen"`
	IsPrimary    bool       `json:"is_primary,omitempty"`
	// Spotify metadata
	Genres     []string `json:"genres,omitempty"`
	Bio        string   `json:"bio,omitempty"`
	Popularity int      `json:"popularity,omitempty"`
	SpotifyID  string   `json:"spotify_id,omitempty"`
}

type ClientSource added in v0.1.30

type ClientSource struct {
	ID        uuid.UUID       `json:"id"`
	UserID    int32           `json:"user_id"`
	Name      string          `json:"name"`
	Token     string          `json:"token"`
	LastSeen  time.Time       `json:"last_seen"`
	Config    json.RawMessage `json:"config"`
	CreatedAt time.Time       `json:"created_at"`
}

type LbzAdditionalInfo added in v0.1.30

type LbzAdditionalInfo struct {
	MediaPlayer             string   `json:"media_player,omitempty"`
	SubmissionClient        string   `json:"submission_client,omitempty"`
	SubmissionClientVersion string   `json:"submission_client_version,omitempty"`
	ReleaseMBID             string   `json:"release_mbid,omitempty"`
	ReleaseGroupMBID        string   `json:"release_group_mbid,omitempty"`
	ArtistMBIDs             []string `json:"artist_mbids,omitempty"`
	ArtistNames             []string `json:"artist_names,omitempty"`
	RecordingMBID           string   `json:"recording_mbid,omitempty"`
	DurationMs              int32    `json:"duration_ms,omitempty"`
	Duration                int32    `json:"duration,omitempty"`
	Tags                    []string `json:"tags,omitempty"`
	AlbumArtist             string   `json:"albumartist,omitempty"`
}

type LbzArtist added in v0.1.30

type LbzArtist struct {
	ArtistMBID string `json:"artist_mbid"`
	ArtistName string `json:"artist_credit_name"`
}

type LbzListenType added in v0.1.30

type LbzListenType string
const (
	ListenTypeSingle     LbzListenType = "single"
	ListenTypePlayingNow LbzListenType = "playing_now"
	ListenTypeImport     LbzListenType = "import"
)

type LbzMBIDMapping added in v0.1.30

type LbzMBIDMapping struct {
	ReleaseMBID   string      `json:"release_mbid"`
	RecordingMBID string      `json:"recording_mbid"`
	ArtistMBIDs   []string    `json:"artist_mbids"`
	Artists       []LbzArtist `json:"artists"`
}

type LbzSubmitListenPayload added in v0.1.30

type LbzSubmitListenPayload struct {
	ListenedAt int64        `json:"listened_at,omitempty"`
	TrackMeta  LbzTrackMeta `json:"track_metadata"`
}

type LbzSubmitListenRequest added in v0.1.30

type LbzSubmitListenRequest struct {
	ListenType LbzListenType            `json:"listen_type,omitempty"`
	Payload    []LbzSubmitListenPayload `json:"payload,omitempty"`
}

type LbzTrackMeta added in v0.1.30

type LbzTrackMeta struct {
	ArtistName     string            `json:"artist_name"` // required
	TrackName      string            `json:"track_name"`  // required
	ReleaseName    string            `json:"release_name,omitempty"`
	MBIDMapping    LbzMBIDMapping    `json:"mbid_mapping"`
	AdditionalInfo LbzAdditionalInfo `json:"additional_info,omitempty"`
}

type Listen

type Listen struct {
	Time  time.Time `json:"time"`
	Track Track     `json:"track"`
}

a Listen is the same thing as a 'scrobble' but i despise the word scrobble so i will not use it

type Session

type Session struct {
	ID         uuid.UUID
	UserID     int32
	CreatedAt  time.Time
	ExpiresAt  time.Time
	Persistent bool
}

type SimpleArtist

type SimpleArtist struct {
	ID   int32  `json:"id"`
	Name string `json:"name"`
}

type Track

type Track struct {
	ID           int32          `json:"id"`
	Title        string         `json:"title"`
	Artists      []SimpleArtist `json:"artists"`
	MbzID        *uuid.UUID     `json:"musicbrainz_id"`
	ListenCount  int64          `json:"listen_count"`
	Duration     int32          `json:"duration"`
	Image        *uuid.UUID     `json:"image"`
	AlbumID      int32          `json:"album_id"`
	Album        *string        `json:"album,omitempty"`
	TimeListened int64          `json:"time_listened"`
	FirstListen  int64          `json:"first_listen"`
	// Spotify metadata
	SpotifyID  string `json:"spotify_id,omitempty"`
	Popularity int    `json:"popularity,omitempty"`
}

type User

type User struct {
	ID       int32    `json:"id"`
	Username string   `json:"username"`
	Role     UserRole `json:"role"` // 'admin' | 'user'
	Password []byte   `json:"-"`
}

type UserRole

type UserRole string
const (
	UserRoleUser  UserRole = "user"
	UserRoleAdmin UserRole = "admin"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL