navidrome/tests/mock_data_store.go
Deluan 5fa19f9cfa chore(server): add logs to begin/end transaction
Signed-off-by: Deluan <deluan@navidrome.org>
2025-02-24 19:13:42 -05:00

222 lines
5.6 KiB
Go

package tests
import (
"context"
"github.com/navidrome/navidrome/model"
)
type MockDataStore struct {
RealDS model.DataStore
MockedLibrary model.LibraryRepository
MockedFolder model.FolderRepository
MockedGenre model.GenreRepository
MockedAlbum model.AlbumRepository
MockedArtist model.ArtistRepository
MockedMediaFile model.MediaFileRepository
MockedTag model.TagRepository
MockedUser model.UserRepository
MockedProperty model.PropertyRepository
MockedPlayer model.PlayerRepository
MockedPlaylist model.PlaylistRepository
MockedShare model.ShareRepository
MockedTranscoding model.TranscodingRepository
MockedUserProps model.UserPropsRepository
MockedScrobbleBuffer model.ScrobbleBufferRepository
MockedRadio model.RadioRepository
}
func (db *MockDataStore) Library(ctx context.Context) model.LibraryRepository {
if db.MockedLibrary == nil {
if db.RealDS != nil {
db.MockedLibrary = db.RealDS.Library(ctx)
} else {
db.MockedLibrary = &MockLibraryRepo{}
}
}
return db.MockedLibrary
}
func (db *MockDataStore) Folder(ctx context.Context) model.FolderRepository {
if db.MockedFolder == nil {
if db.RealDS != nil {
db.MockedFolder = db.RealDS.Folder(ctx)
} else {
db.MockedFolder = struct{ model.FolderRepository }{}
}
}
return db.MockedFolder
}
func (db *MockDataStore) Tag(ctx context.Context) model.TagRepository {
if db.MockedTag == nil {
if db.RealDS != nil {
db.MockedTag = db.RealDS.Tag(ctx)
} else {
db.MockedTag = struct{ model.TagRepository }{}
}
}
return db.MockedTag
}
func (db *MockDataStore) Album(ctx context.Context) model.AlbumRepository {
if db.MockedAlbum == nil {
if db.RealDS != nil {
db.MockedAlbum = db.RealDS.Album(ctx)
} else {
db.MockedAlbum = CreateMockAlbumRepo()
}
}
return db.MockedAlbum
}
func (db *MockDataStore) Artist(ctx context.Context) model.ArtistRepository {
if db.MockedArtist == nil {
if db.RealDS != nil {
db.MockedArtist = db.RealDS.Artist(ctx)
} else {
db.MockedArtist = CreateMockArtistRepo()
}
}
return db.MockedArtist
}
func (db *MockDataStore) MediaFile(ctx context.Context) model.MediaFileRepository {
if db.MockedMediaFile == nil {
if db.RealDS != nil {
db.MockedMediaFile = db.RealDS.MediaFile(ctx)
} else {
db.MockedMediaFile = CreateMockMediaFileRepo()
}
}
return db.MockedMediaFile
}
func (db *MockDataStore) Genre(ctx context.Context) model.GenreRepository {
if db.MockedGenre == nil {
if db.RealDS != nil {
db.MockedGenre = db.RealDS.Genre(ctx)
} else {
db.MockedGenre = &MockedGenreRepo{}
}
}
return db.MockedGenre
}
func (db *MockDataStore) Playlist(ctx context.Context) model.PlaylistRepository {
if db.MockedPlaylist == nil {
if db.RealDS != nil {
db.MockedPlaylist = db.RealDS.Playlist(ctx)
} else {
db.MockedPlaylist = &MockPlaylistRepo{}
}
}
return db.MockedPlaylist
}
func (db *MockDataStore) PlayQueue(ctx context.Context) model.PlayQueueRepository {
if db.RealDS != nil {
return db.RealDS.PlayQueue(ctx)
}
return struct{ model.PlayQueueRepository }{}
}
func (db *MockDataStore) UserProps(ctx context.Context) model.UserPropsRepository {
if db.MockedUserProps == nil {
if db.RealDS != nil {
db.MockedUserProps = db.RealDS.UserProps(ctx)
} else {
db.MockedUserProps = &MockedUserPropsRepo{}
}
}
return db.MockedUserProps
}
func (db *MockDataStore) Property(ctx context.Context) model.PropertyRepository {
if db.MockedProperty == nil {
if db.RealDS != nil {
db.MockedProperty = db.RealDS.Property(ctx)
} else {
db.MockedProperty = &MockedPropertyRepo{}
}
}
return db.MockedProperty
}
func (db *MockDataStore) Share(ctx context.Context) model.ShareRepository {
if db.MockedShare == nil {
if db.RealDS != nil {
db.MockedShare = db.RealDS.Share(ctx)
} else {
db.MockedShare = &MockShareRepo{}
}
}
return db.MockedShare
}
func (db *MockDataStore) User(ctx context.Context) model.UserRepository {
if db.MockedUser == nil {
if db.RealDS != nil {
db.MockedUser = db.RealDS.User(ctx)
} else {
db.MockedUser = CreateMockUserRepo()
}
}
return db.MockedUser
}
func (db *MockDataStore) Transcoding(ctx context.Context) model.TranscodingRepository {
if db.MockedTranscoding == nil {
if db.RealDS != nil {
db.MockedTranscoding = db.RealDS.Transcoding(ctx)
} else {
db.MockedTranscoding = struct{ model.TranscodingRepository }{}
}
}
return db.MockedTranscoding
}
func (db *MockDataStore) Player(ctx context.Context) model.PlayerRepository {
if db.MockedPlayer == nil {
if db.RealDS != nil {
db.MockedPlayer = db.RealDS.Player(ctx)
} else {
db.MockedPlayer = struct{ model.PlayerRepository }{}
}
}
return db.MockedPlayer
}
func (db *MockDataStore) ScrobbleBuffer(ctx context.Context) model.ScrobbleBufferRepository {
if db.MockedScrobbleBuffer == nil {
if db.RealDS != nil {
db.MockedScrobbleBuffer = db.RealDS.ScrobbleBuffer(ctx)
} else {
db.MockedScrobbleBuffer = CreateMockedScrobbleBufferRepo()
}
}
return db.MockedScrobbleBuffer
}
func (db *MockDataStore) Radio(ctx context.Context) model.RadioRepository {
if db.MockedRadio == nil {
if db.RealDS != nil {
db.MockedRadio = db.RealDS.Radio(ctx)
} else {
db.MockedRadio = CreateMockedRadioRepo()
}
}
return db.MockedRadio
}
func (db *MockDataStore) WithTx(block func(tx model.DataStore) error, label ...string) error {
return block(db)
}
func (db *MockDataStore) Resource(context.Context, any) model.ResourceRepository {
return struct{ model.ResourceRepository }{}
}
func (db *MockDataStore) GC(context.Context) error {
return nil
}