psql

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: 23 Imported by: 0

Documentation

Overview

package psql implements the db.DB interface using psx and a sql generated repository

Index

Constants

View Source
const (
	DefaultItemsPerPage = 20
)

Variables

This section is empty.

Functions

func ValidateAndNormalizePassword

func ValidateAndNormalizePassword(password string) (string, error)

func ValidateUsername

func ValidateUsername(username string) error

Types

type Psql

type Psql struct {
	// contains filtered or unexported fields
}

func New

func New() (*Psql, error)

func (*Psql) AddArtistsToAlbum

func (d *Psql) AddArtistsToAlbum(ctx context.Context, opts db.AddArtistsToAlbumOpts) error

func (*Psql) AlbumsWithoutImages

func (d *Psql) AlbumsWithoutImages(ctx context.Context, from int32) ([]*models.Album, error)

func (*Psql) Close

func (d *Psql) Close(ctx context.Context)

func (*Psql) Count

func (p *Psql) Count(ctx context.Context, query string, args ...any) (count int, err error)

func (*Psql) CountAlbums

func (p *Psql) CountAlbums(ctx context.Context, userID int32, period db.Period) (int64, error)

func (*Psql) CountArtists

func (p *Psql) CountArtists(ctx context.Context, userID int32, period db.Period) (int64, error)

func (*Psql) CountListens

func (p *Psql) CountListens(ctx context.Context, userID int32, period db.Period) (int64, error)

func (*Psql) CountTimeListened

func (p *Psql) CountTimeListened(ctx context.Context, userID int32, period db.Period) (int64, error)

func (*Psql) CountTimeListenedToItem

func (p *Psql) CountTimeListenedToItem(ctx context.Context, opts db.TimeListenedOpts) (int64, error)

func (*Psql) CountTracks

func (p *Psql) CountTracks(ctx context.Context, userID int32, period db.Period) (int64, error)

func (*Psql) CountUsers

func (d *Psql) CountUsers(ctx context.Context) (int64, error)

func (*Psql) DeleteAlbum

func (d *Psql) DeleteAlbum(ctx context.Context, id int32) error

func (*Psql) DeleteAlbumAlias

func (d *Psql) DeleteAlbumAlias(ctx context.Context, id int32, alias string) error

func (*Psql) DeleteApiKey

func (d *Psql) DeleteApiKey(ctx context.Context, id int32, userID int32) error

func (*Psql) DeleteArtist

func (d *Psql) DeleteArtist(ctx context.Context, id int32) error

func (*Psql) DeleteArtistAlias

func (d *Psql) DeleteArtistAlias(ctx context.Context, id int32, alias string) error

func (*Psql) DeleteListen

func (d *Psql) DeleteListen(ctx context.Context, trackId int32, listenedAt time.Time, userId int32) error

func (*Psql) DeleteSession

func (d *Psql) DeleteSession(ctx context.Context, sessionId uuid.UUID) error

func (*Psql) DeleteTrack

func (d *Psql) DeleteTrack(ctx context.Context, id int32) error

func (*Psql) DeleteTrackAlias

func (d *Psql) DeleteTrackAlias(ctx context.Context, id int32, alias string) error

func (*Psql) DeleteUser added in v0.1.30

func (d *Psql) DeleteUser(ctx context.Context, id int32) error

func (*Psql) Exec

func (d *Psql) Exec(ctx context.Context, query string, args ...any) error

Not part of the DB interface this package implements. Only used for testing.

func (*Psql) ExistsListenFuzzy added in v0.1.30

func (d *Psql) ExistsListenFuzzy(ctx context.Context, arg repository.ExistsListenFuzzyParams) (bool, error)

func (*Psql) GetAlbum

func (d *Psql) GetAlbum(ctx context.Context, opts db.GetAlbumOpts) (*models.Album, error)

func (*Psql) GetAlbumByImage added in v0.1.30

func (d *Psql) GetAlbumByImage(ctx context.Context, image uuid.UUID) (*models.Album, error)

GetAlbumByImage returns album information by image UUID

func (*Psql) GetAllAlbumAliases

func (d *Psql) GetAllAlbumAliases(ctx context.Context, id int32) ([]models.Alias, error)

func (*Psql) GetAllArtistAliases

func (d *Psql) GetAllArtistAliases(ctx context.Context, id int32) ([]models.Alias, error)

func (*Psql) GetAllTrackAliases

func (d *Psql) GetAllTrackAliases(ctx context.Context, id int32) ([]models.Alias, error)

func (*Psql) GetAllUsers added in v0.1.30

func (d *Psql) GetAllUsers(ctx context.Context) ([]*models.User, error)

func (*Psql) GetApiKeysByUserID

func (d *Psql) GetApiKeysByUserID(ctx context.Context, id int32) ([]models.ApiKey, error)

func (*Psql) GetArtist

func (d *Psql) GetArtist(ctx context.Context, opts db.GetArtistOpts) (*models.Artist, error)

this function sucks because sqlc keeps making new types for rows that are the same

func (*Psql) GetArtistByImage added in v0.1.30

func (d *Psql) GetArtistByImage(ctx context.Context, image uuid.UUID) (*models.Artist, error)

GetArtistByImage returns artist information by image UUID

func (*Psql) GetArtistsForAlbum

func (d *Psql) GetArtistsForAlbum(ctx context.Context, id int32) ([]*models.Artist, error)

func (*Psql) GetArtistsForTrack

func (d *Psql) GetArtistsForTrack(ctx context.Context, id int32) ([]*models.Artist, error)

func (*Psql) GetClientSources added in v0.1.30

func (d *Psql) GetClientSources(ctx context.Context, userID int32) ([]models.ClientSource, error)

func (*Psql) GetExportPage

func (d *Psql) GetExportPage(ctx context.Context, opts db.GetExportPageOpts) ([]*db.ExportItem, error)

func (*Psql) GetImageSource

func (d *Psql) GetImageSource(ctx context.Context, image uuid.UUID) (string, error)

func (*Psql) GetListenActivity

func (d *Psql) GetListenActivity(ctx context.Context, opts db.ListenActivityOpts) ([]db.ListenActivityItem, error)

func (*Psql) GetListensPaginated

func (d *Psql) GetListensPaginated(ctx context.Context, opts db.GetItemsOpts) (*db.PaginatedResponse[*models.Listen], error)

func (*Psql) GetTopAlbumsPaginated

func (d *Psql) GetTopAlbumsPaginated(ctx context.Context, opts db.GetItemsOpts) (*db.PaginatedResponse[*models.Album], error)

func (*Psql) GetTopArtistsPaginated

func (d *Psql) GetTopArtistsPaginated(ctx context.Context, opts db.GetItemsOpts) (*db.PaginatedResponse[*models.Artist], error)

func (*Psql) GetTopTracksPaginated

func (d *Psql) GetTopTracksPaginated(ctx context.Context, opts db.GetItemsOpts) (*db.PaginatedResponse[*models.Track], error)

func (*Psql) GetTrack

func (d *Psql) GetTrack(ctx context.Context, opts db.GetTrackOpts) (*models.Track, error)

func (*Psql) GetUser added in v0.1.30

func (d *Psql) GetUser(ctx context.Context, id int32) (*models.User, error)

func (*Psql) GetUserByApiKey

func (d *Psql) GetUserByApiKey(ctx context.Context, key string) (*models.User, error)

Returns nil, nil when no database entries are found

func (*Psql) GetUserBySession

func (d *Psql) GetUserBySession(ctx context.Context, sessionId uuid.UUID) (*models.User, error)

Returns nil, nil when no database entries are found

func (*Psql) GetUserByUsername

func (d *Psql) GetUserByUsername(ctx context.Context, username string) (*models.User, error)

Returns nil, nil when no database entries are found

func (*Psql) GetUserPreferences

func (s *Psql) GetUserPreferences(ctx context.Context, userId int32) ([]byte, error)

GetUserPreferences retrieves a user's preferences

func (*Psql) GetUserTheme

func (s *Psql) GetUserTheme(ctx context.Context, userId int32) ([]byte, error)

GetUserTheme retrieves a user's saved theme

func (*Psql) ImageHasAssociation

func (d *Psql) ImageHasAssociation(ctx context.Context, image uuid.UUID) (bool, error)

func (*Psql) MergeAlbums

func (d *Psql) MergeAlbums(ctx context.Context, fromId, toId int32, replaceImage bool) error

func (*Psql) MergeArtists

func (d *Psql) MergeArtists(ctx context.Context, fromId, toId int32, replaceImage bool) error

func (*Psql) MergeTracks

func (d *Psql) MergeTracks(ctx context.Context, fromId, toId int32) error

func (*Psql) Ping

func (d *Psql) Ping(ctx context.Context) error

func (*Psql) QueryRow

func (p *Psql) QueryRow(ctx context.Context, query string, args ...any) pgx.Row

Exposes p.conn.QueryRow. Only used for testing. Not part of the DB interface this package implements.

func (*Psql) RefreshSession

func (d *Psql) RefreshSession(ctx context.Context, sessionId uuid.UUID, expiresAt time.Time) error

func (*Psql) RowExists

func (d *Psql) RowExists(ctx context.Context, query string, args ...any) (bool, error)

Not part of the DB interface this package implements. Only used for testing.

func (*Psql) SaveAlbum

func (d *Psql) SaveAlbum(ctx context.Context, opts db.SaveAlbumOpts) (*models.Album, error)

func (*Psql) SaveAlbumAliases

func (d *Psql) SaveAlbumAliases(ctx context.Context, id int32, aliases []string, source string) error

func (*Psql) SaveApiKey

func (d *Psql) SaveApiKey(ctx context.Context, opts db.SaveApiKeyOpts) (*models.ApiKey, error)

func (*Psql) SaveArtist

func (d *Psql) SaveArtist(ctx context.Context, opts db.SaveArtistOpts) (*models.Artist, error)

Equivalent to Psql.SaveArtist, then Psql.SaveMbzAliases

func (*Psql) SaveArtistAliases

func (d *Psql) SaveArtistAliases(ctx context.Context, id int32, aliases []string, source string) error

Inserts all unique aliases into the DB with specified source

func (*Psql) SaveListen

func (d *Psql) SaveListen(ctx context.Context, opts db.SaveListenOpts) error

func (*Psql) SaveSession

func (d *Psql) SaveSession(ctx context.Context, userID int32, expiresAt time.Time, persistent bool) (*models.Session, error)

func (*Psql) SaveTrack

func (d *Psql) SaveTrack(ctx context.Context, opts db.SaveTrackOpts) (*models.Track, error)

func (*Psql) SaveTrackAliases

func (d *Psql) SaveTrackAliases(ctx context.Context, id int32, aliases []string, source string) error

func (*Psql) SaveUser

func (d *Psql) SaveUser(ctx context.Context, opts db.SaveUserOpts) (*models.User, error)

func (*Psql) SaveUserPreferences

func (s *Psql) SaveUserPreferences(ctx context.Context, userId int32, preferencesData []byte) error

SaveUserPreferences saves or updates a user's preferences

func (*Psql) SaveUserTheme

func (s *Psql) SaveUserTheme(ctx context.Context, userId int32, themeData []byte) error

SaveUserTheme saves or updates a user's theme

func (*Psql) SearchAlbums

func (d *Psql) SearchAlbums(ctx context.Context, q string) ([]*models.Album, error)

func (*Psql) SearchArtists

func (d *Psql) SearchArtists(ctx context.Context, q string) ([]*models.Artist, error)

func (*Psql) SearchTracks

func (d *Psql) SearchTracks(ctx context.Context, q string) ([]*models.Track, error)

func (*Psql) SetPrimaryAlbumAlias

func (d *Psql) SetPrimaryAlbumAlias(ctx context.Context, id int32, alias string) error

func (*Psql) SetPrimaryAlbumArtist

func (d *Psql) SetPrimaryAlbumArtist(ctx context.Context, id int32, artistId int32, value bool) error

func (*Psql) SetPrimaryArtistAlias

func (d *Psql) SetPrimaryArtistAlias(ctx context.Context, id int32, alias string) error

func (*Psql) SetPrimaryTrackAlias

func (d *Psql) SetPrimaryTrackAlias(ctx context.Context, id int32, alias string) error

func (*Psql) SetPrimaryTrackArtist

func (d *Psql) SetPrimaryTrackArtist(ctx context.Context, id int32, artistId int32, value bool) error

func (*Psql) UpdateAlbum

func (d *Psql) UpdateAlbum(ctx context.Context, opts db.UpdateAlbumOpts) error

func (*Psql) UpdateApiKeyLabel

func (d *Psql) UpdateApiKeyLabel(ctx context.Context, opts db.UpdateApiKeyLabelOpts) error

func (*Psql) UpdateArtist

func (d *Psql) UpdateArtist(ctx context.Context, opts db.UpdateArtistOpts) error

func (*Psql) UpdateArtistMetadata added in v0.1.30

func (d *Psql) UpdateArtistMetadata(ctx context.Context, opts db.UpdateArtistMetadataParams) error

func (*Psql) UpdateReleaseMetadata added in v0.1.30

func (d *Psql) UpdateReleaseMetadata(ctx context.Context, opts db.UpdateReleaseMetadataParams) error

func (*Psql) UpdateTrack

func (d *Psql) UpdateTrack(ctx context.Context, opts db.UpdateTrackOpts) error

func (*Psql) UpdateTrackMetadata added in v0.1.30

func (d *Psql) UpdateTrackMetadata(ctx context.Context, opts db.UpdateTrackMetadataParams) error

func (*Psql) UpdateUser

func (d *Psql) UpdateUser(ctx context.Context, opts db.UpdateUserOpts) error

func (*Psql) UpsertClientSource added in v0.1.30

func (d *Psql) UpsertClientSource(ctx context.Context, userID int32, name, token string) error

Jump to

Keyboard shortcuts

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