// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.27.0

package dbq

import (
	"github.com/jackc/pgx/v5/pgtype"
)

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
}

type Artist struct {
	ID        pgtype.UUID
	Name      string
	SortName  string
	Mbid      *string
	CreatedAt pgtype.Timestamptz
	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 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 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
}

type PlaySession struct {
	ID          pgtype.UUID
	UserID      pgtype.UUID
	StartedAt   pgtype.Timestamptz
	EndedAt     pgtype.Timestamptz
	LastEventAt pgtype.Timestamptz
	TrackCount  int32
	ClientID    *string
}

type Session struct {
	ID         pgtype.UUID
	UserID     pgtype.UUID
	TokenHash  []byte
	UserAgent  string
	CreatedAt  pgtype.Timestamptz
	LastSeenAt pgtype.Timestamptz
}

type SkipEvent struct {
	ID         pgtype.UUID
	UserID     pgtype.UUID
	TrackID    pgtype.UUID
	SessionID  pgtype.UUID
	SkippedAt  pgtype.Timestamptz
	PositionMs int32
}

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
}

type User struct {
	ID               pgtype.UUID
	Username         string
	PasswordHash     string
	ApiToken         string
	IsAdmin          bool
	CreatedAt        pgtype.Timestamptz
	SubsonicPassword *string
}
