database

package
v0.17.0 Latest Latest
Warning

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

Go to latest
Published: Nov 26, 2024 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidFilter = errors.New("Invalid filter")
View Source
var ErrInvalidSort = errors.New("Invalid sort")
View Source
var ErrItemAlreadyExists = errors.New("database: item already exists")
View Source
var ErrItemNotFound = errors.New("database: item not found")

Functions

func AlbumQuery added in v0.16.2

func AlbumQuery() *goqu.SelectDataset

func ArtistQuery added in v0.16.2

func ArtistQuery() *goqu.SelectDataset

func RunMigrateUp added in v0.14.0

func RunMigrateUp(db *Database) error

func TagQuery added in v0.16.2

func TagQuery() *goqu.SelectDataset

func TrackMapNameToId added in v0.11.0

func TrackMapNameToId(typ string, name string) string

func TrackQuery added in v0.13.0

func TrackQuery() *goqu.SelectDataset

Types

type Album

type Album struct {
	Id       string `db:"id"`
	Name     string `db:"name"`
	ArtistId string `db:"artist_id"`

	CoverArt sql.NullString `db:"cover_art"`
	Year     sql.NullInt64  `db:"year"`

	ArtistName string `db:"artist_name"`

	Created int64 `db:"created"`
	Updated int64 `db:"updated"`
}

type AlbumChanges added in v0.7.0

type AlbumChanges struct {
	Name     types.Change[string]
	ArtistId types.Change[string]

	CoverArt types.Change[sql.NullString]
	Year     types.Change[sql.NullInt64]

	Created types.Change[int64]
}

type AlbumResolverAdapter added in v0.11.0

type AlbumResolverAdapter struct {
}

func (*AlbumResolverAdapter) DefaultSort added in v0.16.2

func (*AlbumResolverAdapter) DefaultSort() string

func (*AlbumResolverAdapter) GetDefaultSort added in v0.11.0

func (a *AlbumResolverAdapter) GetDefaultSort() string

func (*AlbumResolverAdapter) MapName added in v0.11.0

func (a *AlbumResolverAdapter) MapName(name string) (types.Name, error)

func (*AlbumResolverAdapter) MapNameToId added in v0.11.0

func (a *AlbumResolverAdapter) MapNameToId(typ, name string) (string, error)

func (*AlbumResolverAdapter) MapSortName added in v0.16.2

func (*AlbumResolverAdapter) MapSortName(name string) (types.Name, error)

func (*AlbumResolverAdapter) ResolveFunctionCall added in v0.11.0

func (a *AlbumResolverAdapter) ResolveFunctionCall(resolver *filter.Resolver, name string, args []ast.Expr) (filter.FilterExpr, error)

func (*AlbumResolverAdapter) ResolveTable added in v0.11.0

func (a *AlbumResolverAdapter) ResolveTable(typ string) (filter.Table, error)

type Artist

type Artist struct {
	Id      string         `db:"id"`
	Name    string         `db:"name"`
	Picture sql.NullString `db:"picture"`
}

type ArtistChanges added in v0.7.0

type ArtistChanges struct {
	Name    types.Change[string]
	Picture types.Change[sql.NullString]
}

type Config added in v0.10.0

type Config struct {
	OwnerId string
}

type Connection added in v0.10.0

type Connection interface {
	Query(query string, args ...any) (*sql.Rows, error)
	QueryRow(query string, args ...any) *sql.Row
	Exec(query string, args ...any) (sql.Result, error)
}

type CreateAlbumParams

type CreateAlbumParams struct {
	Id       string
	Name     string
	ArtistId string

	CoverArt sql.NullString
	Year     sql.NullInt64

	Created int64
	Updated int64
}

type CreateArtistParams

type CreateArtistParams struct {
	Id      string
	Name    string
	Picture sql.NullString
}

type CreatePlaylistParams added in v0.10.0

type CreatePlaylistParams struct {
	Name    string
	OwnerId string
}

type CreateTrackParams

type CreateTrackParams struct {
	Id   string
	Name string

	AlbumId  string
	ArtistId string

	Number   sql.NullInt64
	Duration sql.NullInt64
	Year     sql.NullInt64

	ExportName       string
	OriginalFilename string
	MobileFilename   string

	Created int64
	Updated int64
}

type Database added in v0.6.0

type Database struct {
	NewRawConn *sqlx.DB
	RawConn    *sql.DB
	Conn       Connection
}

func New

func New(conn *sql.DB) *Database

func Open added in v0.10.0

func Open(workDir types.WorkDir) (*Database, error)

func (*Database) AddItemsToPlaylist added in v0.10.0

func (db *Database) AddItemsToPlaylist(ctx context.Context, playlistId string, trackIds []string) error

func (*Database) AddItemsToPlaylistRaw added in v0.16.2

func (db *Database) AddItemsToPlaylistRaw(ctx context.Context, playlistId string, trackIds []string) error

func (*Database) AddTagToTrack added in v0.8.0

func (db *Database) AddTagToTrack(ctx context.Context, tagSlug, trackId string) error

func (*Database) Begin added in v0.10.0

func (db *Database) Begin() (*Database, *sqlx.Tx, error)

func (*Database) CreateAlbum added in v0.6.0

func (db *Database) CreateAlbum(ctx context.Context, params CreateAlbumParams) (Album, error)

func (*Database) CreateArtist added in v0.6.0

func (db *Database) CreateArtist(ctx context.Context, params CreateArtistParams) (Artist, error)

func (*Database) CreateConfig added in v0.10.0

func (db *Database) CreateConfig(ctx context.Context, ownerId string) (Config, error)

func (*Database) CreatePlaylist added in v0.10.0

func (db *Database) CreatePlaylist(ctx context.Context, params CreatePlaylistParams) (Playlist, error)

func (*Database) CreateTag added in v0.8.0

func (db *Database) CreateTag(ctx context.Context, slug, name string) error

func (*Database) CreateTrack added in v0.6.0

func (db *Database) CreateTrack(ctx context.Context, params CreateTrackParams) (string, error)

func (*Database) CreateUser added in v0.10.0

func (db *Database) CreateUser(ctx context.Context, username, password string) (User, error)

func (*Database) DeleteItemsFromPlaylist added in v0.10.0

func (db *Database) DeleteItemsFromPlaylist(ctx context.Context, playlistId string, trackIds []string) error

TODO(patrik): Use Begin

func (*Database) Exec added in v0.6.0

func (db *Database) Exec(ctx context.Context, s ToSQL) (sql.Result, error)

func (*Database) Get added in v0.16.2

func (db *Database) Get(dest any, s ToSQL) error

func (*Database) GetAlbumById added in v0.6.0

func (db *Database) GetAlbumById(ctx context.Context, id string) (Album, error)

func (*Database) GetAlbumByName added in v0.10.0

func (db *Database) GetAlbumByName(ctx context.Context, name string) (Album, error)

func (*Database) GetAlbumByPath added in v0.6.0

func (db *Database) GetAlbumByPath(ctx context.Context, path string) (Album, error)

func (*Database) GetAlbumsByArtist added in v0.6.0

func (db *Database) GetAlbumsByArtist(ctx context.Context, artistId string) ([]Album, error)

func (*Database) GetAllAlbums added in v0.6.0

func (db *Database) GetAllAlbums(ctx context.Context, filterStr string, sortStr string) ([]Album, error)

func (*Database) GetAllArtists added in v0.6.0

func (db *Database) GetAllArtists(ctx context.Context) ([]Artist, error)

func (*Database) GetAllTags added in v0.9.0

func (db *Database) GetAllTags(ctx context.Context) ([]Tag, error)

func (*Database) GetAllTracks added in v0.6.0

func (db *Database) GetAllTracks(ctx context.Context, filterStr string, sortStr string, includeAll bool) ([]Track, error)

func (*Database) GetAllUsers added in v0.12.0

func (db *Database) GetAllUsers(ctx context.Context) ([]User, error)

func (*Database) GetArtistById added in v0.6.0

func (db *Database) GetArtistById(ctx context.Context, id string) (Artist, error)

func (*Database) GetArtistByName added in v0.8.0

func (db *Database) GetArtistByName(ctx context.Context, name string) (Artist, error)

func (*Database) GetConfig added in v0.10.0

func (db *Database) GetConfig(ctx context.Context) (*Config, error)

func (*Database) GetPlaylistById added in v0.10.0

func (db *Database) GetPlaylistById(ctx context.Context, id string) (Playlist, error)

func (*Database) GetPlaylistItems added in v0.10.0

func (db *Database) GetPlaylistItems(ctx context.Context, playlistId string) ([]PlaylistItem, error)

func (*Database) GetPlaylistTracks added in v0.16.2

func (db *Database) GetPlaylistTracks(ctx context.Context, playlistId string) ([]Track, error)

func (*Database) GetPlaylistsByUser added in v0.10.0

func (db *Database) GetPlaylistsByUser(ctx context.Context, userId string) ([]Playlist, error)

func (*Database) GetTagBySlug added in v0.16.2

func (db *Database) GetTagBySlug(ctx context.Context, slug string) (Tag, error)

func (*Database) GetTrackById added in v0.6.0

func (db *Database) GetTrackById(ctx context.Context, id string) (Track, error)

func (*Database) GetTrackByNameAndAlbum added in v0.11.0

func (db *Database) GetTrackByNameAndAlbum(ctx context.Context, name string, albumId string) (Track, error)

func (*Database) GetTrackTags added in v0.8.0

func (db *Database) GetTrackTags(ctx context.Context, trackId string) ([]Tag, error)

func (*Database) GetTracksByAlbum added in v0.6.0

func (db *Database) GetTracksByAlbum(ctx context.Context, albumId string) ([]Track, error)

func (*Database) GetUserById added in v0.10.0

func (db *Database) GetUserById(ctx context.Context, id string) (User, error)

func (*Database) GetUserByUsername added in v0.10.0

func (db *Database) GetUserByUsername(ctx context.Context, username string) (User, error)

func (*Database) Invalidate added in v0.11.0

func (db *Database) Invalidate()

func (*Database) MarkAllArtistsUnavailable added in v0.7.0

func (db *Database) MarkAllArtistsUnavailable(ctx context.Context) error

func (*Database) MovePlaylistItem added in v0.10.0

func (db *Database) MovePlaylistItem(ctx context.Context, playlistId string, trackId string, toIndex int) error

TODO(patrik): Add bounds check for toIndex

func (*Database) Query added in v0.6.0

func (db *Database) Query(ctx context.Context, s ToSQL) (*sql.Rows, error)

func (*Database) QueryRow added in v0.6.0

func (db *Database) QueryRow(ctx context.Context, s ToSQL) (*sql.Row, error)

func (*Database) RemoveAlbum added in v0.16.2

func (db *Database) RemoveAlbum(ctx context.Context, id string) error

func (*Database) RemoveAlbumTracks added in v0.16.2

func (db *Database) RemoveAlbumTracks(ctx context.Context, albumId string) error

func (*Database) RemoveAllTagsFromTrack added in v0.16.2

func (db *Database) RemoveAllTagsFromTrack(ctx context.Context, trackId string) error

func (*Database) RemoveTagFromTrack added in v0.8.0

func (db *Database) RemoveTagFromTrack(ctx context.Context, tagSlug, trackId string) error

func (*Database) RemoveTrack added in v0.16.2

func (db *Database) RemoveTrack(ctx context.Context, id string) error

func (*Database) RunMigrateDown added in v0.16.2

func (db *Database) RunMigrateDown() error

func (*Database) RunMigrateUp added in v0.16.2

func (db *Database) RunMigrateUp() error

func (*Database) Select added in v0.16.2

func (db *Database) Select(dest any, s ToSQL) error

func (*Database) UpdateAlbum added in v0.7.0

func (db *Database) UpdateAlbum(ctx context.Context, id string, changes AlbumChanges) error

func (*Database) UpdateArtist added in v0.7.0

func (db *Database) UpdateArtist(ctx context.Context, id string, changes ArtistChanges) error

func (*Database) UpdateTrack added in v0.6.0

func (db *Database) UpdateTrack(ctx context.Context, id string, changes TrackChanges) error

func (*Database) UpdateUser added in v0.17.0

func (db *Database) UpdateUser(ctx context.Context, id string, changes UserChanges) error

type Playlist added in v0.10.0

type Playlist struct {
	Id      string
	Name    string
	OwnerId string
}

type PlaylistItem added in v0.10.0

type PlaylistItem struct {
	PlaylistId string
	TrackId    string
	ItemIndex  int
}

type Scan added in v0.13.0

type Scan interface {
	Scan(dest ...any) error
}

type Tag added in v0.8.0

type Tag struct {
	Slug string `db:"slug"`
	Name string `db:"name"`
}

type ToSQL added in v0.6.0

type ToSQL interface {
	ToSQL() (string, []interface{}, error)
}

type Track

type Track struct {
	Id   string `db:"id"`
	Name string `db:"name"`

	AlbumId  string `db:"album_id"`
	ArtistId string `db:"artist_id"`

	Number   sql.NullInt64 `db:"track_number"`
	Duration sql.NullInt64 `db:"duration"`
	Year     sql.NullInt64 `db:"year"`

	ExportName       string `db:"export_name"`
	OriginalFilename string `db:"original_filename"`
	MobileFilename   string `db:"mobile_filename"`

	AlbumName     string         `db:"album_name"`
	AlbumCoverArt sql.NullString `db:"album_cover_art"`
	ArtistName    string         `db:"artist_name"`

	Created int64 `db:"created"`
	Updated int64 `db:"updated"`

	Tags sql.NullString `db:"tags"`
}

type TrackChanges added in v0.7.0

type TrackChanges struct {
	Name     types.Change[string]
	AlbumId  types.Change[string]
	ArtistId types.Change[string]

	Number   types.Change[sql.NullInt64]
	Duration types.Change[sql.NullInt64]
	Year     types.Change[sql.NullInt64]

	ExportName       types.Change[string]
	OriginalFilename types.Change[string]
	MobileFilename   types.Change[string]

	Created types.Change[int64]
}

type TrackResolverAdapter added in v0.11.0

type TrackResolverAdapter struct{}

func (*TrackResolverAdapter) DefaultSort added in v0.15.2

func (a *TrackResolverAdapter) DefaultSort() string

func (*TrackResolverAdapter) MapName added in v0.11.0

func (a *TrackResolverAdapter) MapName(name string) (types.Name, error)

func (*TrackResolverAdapter) MapNameToId added in v0.11.0

func (a *TrackResolverAdapter) MapNameToId(typ, name string) (string, error)

func (*TrackResolverAdapter) MapSortName added in v0.15.2

func (a *TrackResolverAdapter) MapSortName(name string) (types.Name, error)

func (*TrackResolverAdapter) ResolveFunctionCall added in v0.11.0

func (a *TrackResolverAdapter) ResolveFunctionCall(resolver *filter.Resolver, name string, args []ast.Expr) (filter.FilterExpr, error)

func (*TrackResolverAdapter) ResolveTable added in v0.11.0

func (a *TrackResolverAdapter) ResolveTable(typ string) (filter.Table, error)

type User added in v0.10.0

type User struct {
	Id       string
	Username string
	Password string
}

type UserChanges added in v0.17.0

type UserChanges struct {
	Username types.Change[string]
	Password types.Change[string]
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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