summaryrefslogtreecommitdiff
path: root/internal/repository/mock.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/repository/mock.go')
-rw-r--r--internal/repository/mock.go635
1 files changed, 635 insertions, 0 deletions
diff --git a/internal/repository/mock.go b/internal/repository/mock.go
new file mode 100644
index 0000000..7c54e5c
--- /dev/null
+++ b/internal/repository/mock.go
@@ -0,0 +1,635 @@
+// Package repository provides data access abstractions.
+package repository
+
+import (
+ "context"
+ "time"
+
+ "github.com/paul/kiss-media-player/internal/model"
+)
+
+// compile-time checks.
+var (
+ _ Store = (*MockStore)(nil)
+)
+
+// MockStore is a hand-written fake for all repository interfaces.
+// Each embedded struct provides default no-op / zero-value behavior;
+// callers override individual func fields to inject test behavior.
+type MockStore struct {
+ UserRepo MockUserRepo
+ SetRepo MockSetRepo
+ SetPermissionRepo MockSetPermissionRepo
+ MediaRepo MockMediaRepo
+ TagRepo MockTagRepo
+ FavoriteRepo MockFavoriteRepo
+ PlaybackProgressRepo MockPlaybackProgressRepo
+ PlaybackAccumulatorRepo MockPlaybackAccumulatorRepo
+ SessionRepo MockSessionRepo
+ ShareRepo MockShareRepo
+ NoteRepo MockNoteRepo
+}
+
+func (m *MockStore) CreateUser(ctx context.Context, user *model.User) (int64, error) {
+ return m.UserRepo.CreateUser(ctx, user)
+}
+func (m *MockStore) GetUserByID(ctx context.Context, id int64) (*model.User, error) {
+ return m.UserRepo.GetUserByID(ctx, id)
+}
+func (m *MockStore) GetUserByUsername(ctx context.Context, username string) (*model.User, error) {
+ return m.UserRepo.GetUserByUsername(ctx, username)
+}
+func (m *MockStore) ListUsers(ctx context.Context) ([]model.User, error) {
+ return m.UserRepo.ListUsers(ctx)
+}
+func (m *MockStore) DeleteUser(ctx context.Context, id int64) error {
+ return m.UserRepo.DeleteUser(ctx, id)
+}
+func (m *MockStore) CountUsers(ctx context.Context) (int, error) { return m.UserRepo.CountUsers(ctx) }
+
+func (m *MockStore) CreateSet(ctx context.Context, set *model.Set) (int64, error) {
+ return m.SetRepo.CreateSet(ctx, set)
+}
+func (m *MockStore) GetSetByID(ctx context.Context, id int64) (*model.Set, error) {
+ return m.SetRepo.GetSetByID(ctx, id)
+}
+func (m *MockStore) ListSets(ctx context.Context) ([]model.Set, error) {
+ return m.SetRepo.ListSets(ctx)
+}
+func (m *MockStore) UpdateSet(ctx context.Context, set *model.Set) error {
+ return m.SetRepo.UpdateSet(ctx, set)
+}
+func (m *MockStore) DeleteSet(ctx context.Context, id int64) error {
+ return m.SetRepo.DeleteSet(ctx, id)
+}
+
+func (m *MockStore) GrantPermission(ctx context.Context, perm *model.SetPermission) error {
+ return m.SetPermissionRepo.GrantPermission(ctx, perm)
+}
+func (m *MockStore) RevokePermission(ctx context.Context, setID, userID int64) error {
+ return m.SetPermissionRepo.RevokePermission(ctx, setID, userID)
+}
+func (m *MockStore) GetPermission(ctx context.Context, setID, userID int64) (*model.SetPermission, error) {
+ return m.SetPermissionRepo.GetPermission(ctx, setID, userID)
+}
+func (m *MockStore) ListPermissionsBySet(ctx context.Context, setID int64) ([]model.SetPermission, error) {
+ return m.SetPermissionRepo.ListPermissionsBySet(ctx, setID)
+}
+func (m *MockStore) ListPermissionsByUser(ctx context.Context, userID int64) ([]model.SetPermission, error) {
+ return m.SetPermissionRepo.ListPermissionsByUser(ctx, userID)
+}
+
+func (m *MockStore) CreateMedia(ctx context.Context, media *model.Media) (int64, error) {
+ return m.MediaRepo.CreateMedia(ctx, media)
+}
+func (m *MockStore) GetMediaByID(ctx context.Context, id int64) (*model.Media, error) {
+ return m.MediaRepo.GetMediaByID(ctx, id)
+}
+func (m *MockStore) UpdateMedia(ctx context.Context, media *model.Media) error {
+ return m.MediaRepo.UpdateMedia(ctx, media)
+}
+func (m *MockStore) SoftDeleteMedia(ctx context.Context, id int64) error {
+ return m.MediaRepo.SoftDeleteMedia(ctx, id)
+}
+func (m *MockStore) RestoreMedia(ctx context.Context, id int64) error {
+ return m.MediaRepo.RestoreMedia(ctx, id)
+}
+func (m *MockStore) HardDeleteMedia(ctx context.Context, id int64) error {
+ return m.MediaRepo.HardDeleteMedia(ctx, id)
+}
+func (m *MockStore) ListMedia(ctx context.Context, filter MediaFilter) ([]model.Media, error) {
+ return m.MediaRepo.ListMedia(ctx, filter)
+}
+func (m *MockStore) ListDeletedMedia(ctx context.Context) ([]model.Media, error) {
+ return m.MediaRepo.ListDeletedMedia(ctx)
+}
+func (m *MockStore) IncrementPlayCount(ctx context.Context, id int64) error {
+ return m.MediaRepo.IncrementPlayCount(ctx, id)
+}
+
+func (m *MockStore) CreateTag(ctx context.Context, name string) (int64, error) {
+ return m.TagRepo.CreateTag(ctx, name)
+}
+func (m *MockStore) GetTagByID(ctx context.Context, id int64) (*model.Tag, error) {
+ return m.TagRepo.GetTagByID(ctx, id)
+}
+func (m *MockStore) GetTagByName(ctx context.Context, name string) (*model.Tag, error) {
+ return m.TagRepo.GetTagByName(ctx, name)
+}
+func (m *MockStore) ListTags(ctx context.Context) ([]model.Tag, error) {
+ return m.TagRepo.ListTags(ctx)
+}
+func (m *MockStore) DeleteTag(ctx context.Context, id int64) error {
+ return m.TagRepo.DeleteTag(ctx, id)
+}
+func (m *MockStore) AssignTag(ctx context.Context, mediaID, tagID int64) error {
+ return m.TagRepo.AssignTag(ctx, mediaID, tagID)
+}
+func (m *MockStore) RemoveTag(ctx context.Context, mediaID, tagID int64) error {
+ return m.TagRepo.RemoveTag(ctx, mediaID, tagID)
+}
+func (m *MockStore) ListTagsByMedia(ctx context.Context, mediaID int64) ([]model.Tag, error) {
+ return m.TagRepo.ListTagsByMedia(ctx, mediaID)
+}
+
+func (m *MockStore) ToggleFavorite(ctx context.Context, userID, mediaID int64) (bool, error) {
+ return m.FavoriteRepo.ToggleFavorite(ctx, userID, mediaID)
+}
+func (m *MockStore) IsFavorite(ctx context.Context, userID, mediaID int64) (bool, error) {
+ return m.FavoriteRepo.IsFavorite(ctx, userID, mediaID)
+}
+func (m *MockStore) ListFavoritesByUser(ctx context.Context, userID int64) ([]model.Favorite, error) {
+ return m.FavoriteRepo.ListFavoritesByUser(ctx, userID)
+}
+
+func (m *MockStore) UpsertProgress(ctx context.Context, progress *model.PlaybackProgress) error {
+ return m.PlaybackProgressRepo.UpsertProgress(ctx, progress)
+}
+func (m *MockStore) GetProgress(ctx context.Context, userID, mediaID int64) (*model.PlaybackProgress, error) {
+ return m.PlaybackProgressRepo.GetProgress(ctx, userID, mediaID)
+}
+func (m *MockStore) ListProgressByUser(ctx context.Context, userID int64) ([]model.PlaybackProgress, error) {
+ return m.PlaybackProgressRepo.ListProgressByUser(ctx, userID)
+}
+
+func (m *MockStore) UpsertAccumulator(ctx context.Context, acc *model.PlaybackAccumulator) error {
+ return m.PlaybackAccumulatorRepo.UpsertAccumulator(ctx, acc)
+}
+func (m *MockStore) GetAccumulator(ctx context.Context, sessionID string, mediaID int64) (*model.PlaybackAccumulator, error) {
+ return m.PlaybackAccumulatorRepo.GetAccumulator(ctx, sessionID, mediaID)
+}
+
+func (m *MockStore) CreateSession(ctx context.Context, session *model.Session) error {
+ return m.SessionRepo.CreateSession(ctx, session)
+}
+func (m *MockStore) GetSessionByID(ctx context.Context, id string) (*model.Session, error) {
+ return m.SessionRepo.GetSessionByID(ctx, id)
+}
+func (m *MockStore) DeleteSession(ctx context.Context, id string) error {
+ return m.SessionRepo.DeleteSession(ctx, id)
+}
+func (m *MockStore) DeleteExpiredSessions(ctx context.Context, now time.Time) error {
+ return m.SessionRepo.DeleteExpiredSessions(ctx, now)
+}
+
+func (m *MockStore) CreateShare(ctx context.Context, share *model.Share) error {
+ return m.ShareRepo.CreateShare(ctx, share)
+}
+func (m *MockStore) GetShareByToken(ctx context.Context, token string) (*model.Share, error) {
+ return m.ShareRepo.GetShareByToken(ctx, token)
+}
+func (m *MockStore) ListSharesByMedia(ctx context.Context, mediaID int64) ([]model.Share, error) {
+ return m.ShareRepo.ListSharesByMedia(ctx, mediaID)
+}
+func (m *MockStore) UseShare(ctx context.Context, token string) error {
+ return m.ShareRepo.UseShare(ctx, token)
+}
+func (m *MockStore) DeleteShare(ctx context.Context, token string) error {
+ return m.ShareRepo.DeleteShare(ctx, token)
+}
+func (m *MockStore) DeleteExpiredShares(ctx context.Context, now time.Time) error {
+ return m.ShareRepo.DeleteExpiredShares(ctx, now)
+}
+
+func (m *MockStore) UpsertNote(ctx context.Context, note *model.Note) error {
+ return m.NoteRepo.UpsertNote(ctx, note)
+}
+func (m *MockStore) GetNote(ctx context.Context, mediaID, userID int64) (*model.Note, error) {
+ return m.NoteRepo.GetNote(ctx, mediaID, userID)
+}
+func (m *MockStore) DeleteNote(ctx context.Context, mediaID, userID int64) error {
+ return m.NoteRepo.DeleteNote(ctx, mediaID, userID)
+}
+
+// MockUserRepo is a fake UserRepo.
+type MockUserRepo struct {
+ CreateUserFunc func(ctx context.Context, user *model.User) (int64, error)
+ GetUserByIDFunc func(ctx context.Context, id int64) (*model.User, error)
+ GetUserByUsernameFunc func(ctx context.Context, username string) (*model.User, error)
+ ListUsersFunc func(ctx context.Context) ([]model.User, error)
+ DeleteUserFunc func(ctx context.Context, id int64) error
+ CountUsersFunc func(ctx context.Context) (int, error)
+}
+
+func (m *MockUserRepo) CreateUser(ctx context.Context, user *model.User) (int64, error) {
+ if m.CreateUserFunc != nil {
+ return m.CreateUserFunc(ctx, user)
+ }
+ return 1, nil
+}
+func (m *MockUserRepo) GetUserByID(ctx context.Context, id int64) (*model.User, error) {
+ if m.GetUserByIDFunc != nil {
+ return m.GetUserByIDFunc(ctx, id)
+ }
+ return nil, nil
+}
+func (m *MockUserRepo) GetUserByUsername(ctx context.Context, username string) (*model.User, error) {
+ if m.GetUserByUsernameFunc != nil {
+ return m.GetUserByUsernameFunc(ctx, username)
+ }
+ return nil, nil
+}
+func (m *MockUserRepo) ListUsers(ctx context.Context) ([]model.User, error) {
+ if m.ListUsersFunc != nil {
+ return m.ListUsersFunc(ctx)
+ }
+ return nil, nil
+}
+func (m *MockUserRepo) DeleteUser(ctx context.Context, id int64) error {
+ if m.DeleteUserFunc != nil {
+ return m.DeleteUserFunc(ctx, id)
+ }
+ return nil
+}
+func (m *MockUserRepo) CountUsers(ctx context.Context) (int, error) {
+ if m.CountUsersFunc != nil {
+ return m.CountUsersFunc(ctx)
+ }
+ return 0, nil
+}
+
+// MockSetRepo is a fake SetRepo.
+type MockSetRepo struct {
+ CreateSetFunc func(ctx context.Context, set *model.Set) (int64, error)
+ GetSetByIDFunc func(ctx context.Context, id int64) (*model.Set, error)
+ ListSetsFunc func(ctx context.Context) ([]model.Set, error)
+ UpdateSetFunc func(ctx context.Context, set *model.Set) error
+ DeleteSetFunc func(ctx context.Context, id int64) error
+}
+
+func (m *MockSetRepo) CreateSet(ctx context.Context, set *model.Set) (int64, error) {
+ if m.CreateSetFunc != nil {
+ return m.CreateSetFunc(ctx, set)
+ }
+ return 1, nil
+}
+func (m *MockSetRepo) GetSetByID(ctx context.Context, id int64) (*model.Set, error) {
+ if m.GetSetByIDFunc != nil {
+ return m.GetSetByIDFunc(ctx, id)
+ }
+ return nil, nil
+}
+func (m *MockSetRepo) ListSets(ctx context.Context) ([]model.Set, error) {
+ if m.ListSetsFunc != nil {
+ return m.ListSetsFunc(ctx)
+ }
+ return nil, nil
+}
+func (m *MockSetRepo) UpdateSet(ctx context.Context, set *model.Set) error {
+ if m.UpdateSetFunc != nil {
+ return m.UpdateSetFunc(ctx, set)
+ }
+ return nil
+}
+func (m *MockSetRepo) DeleteSet(ctx context.Context, id int64) error {
+ if m.DeleteSetFunc != nil {
+ return m.DeleteSetFunc(ctx, id)
+ }
+ return nil
+}
+
+// MockSetPermissionRepo is a fake SetPermissionRepo.
+type MockSetPermissionRepo struct {
+ GrantPermissionFunc func(ctx context.Context, perm *model.SetPermission) error
+ RevokePermissionFunc func(ctx context.Context, setID, userID int64) error
+ GetPermissionFunc func(ctx context.Context, setID, userID int64) (*model.SetPermission, error)
+ ListPermissionsBySetFunc func(ctx context.Context, setID int64) ([]model.SetPermission, error)
+ ListPermissionsByUserFunc func(ctx context.Context, userID int64) ([]model.SetPermission, error)
+}
+
+func (m *MockSetPermissionRepo) GrantPermission(ctx context.Context, perm *model.SetPermission) error {
+ if m.GrantPermissionFunc != nil {
+ return m.GrantPermissionFunc(ctx, perm)
+ }
+ return nil
+}
+func (m *MockSetPermissionRepo) RevokePermission(ctx context.Context, setID, userID int64) error {
+ if m.RevokePermissionFunc != nil {
+ return m.RevokePermissionFunc(ctx, setID, userID)
+ }
+ return nil
+}
+func (m *MockSetPermissionRepo) GetPermission(ctx context.Context, setID, userID int64) (*model.SetPermission, error) {
+ if m.GetPermissionFunc != nil {
+ return m.GetPermissionFunc(ctx, setID, userID)
+ }
+ return nil, nil
+}
+func (m *MockSetPermissionRepo) ListPermissionsBySet(ctx context.Context, setID int64) ([]model.SetPermission, error) {
+ if m.ListPermissionsBySetFunc != nil {
+ return m.ListPermissionsBySetFunc(ctx, setID)
+ }
+ return nil, nil
+}
+func (m *MockSetPermissionRepo) ListPermissionsByUser(ctx context.Context, userID int64) ([]model.SetPermission, error) {
+ if m.ListPermissionsByUserFunc != nil {
+ return m.ListPermissionsByUserFunc(ctx, userID)
+ }
+ return nil, nil
+}
+
+// MockMediaRepo is a fake MediaRepo.
+type MockMediaRepo struct {
+ CreateMediaFunc func(ctx context.Context, media *model.Media) (int64, error)
+ GetMediaByIDFunc func(ctx context.Context, id int64) (*model.Media, error)
+ UpdateMediaFunc func(ctx context.Context, media *model.Media) error
+ SoftDeleteMediaFunc func(ctx context.Context, id int64) error
+ RestoreMediaFunc func(ctx context.Context, id int64) error
+ HardDeleteMediaFunc func(ctx context.Context, id int64) error
+ ListMediaFunc func(ctx context.Context, filter MediaFilter) ([]model.Media, error)
+ ListDeletedMediaFunc func(ctx context.Context) ([]model.Media, error)
+ IncrementPlayCountFunc func(ctx context.Context, id int64) error
+}
+
+func (m *MockMediaRepo) CreateMedia(ctx context.Context, media *model.Media) (int64, error) {
+ if m.CreateMediaFunc != nil {
+ return m.CreateMediaFunc(ctx, media)
+ }
+ return 1, nil
+}
+func (m *MockMediaRepo) GetMediaByID(ctx context.Context, id int64) (*model.Media, error) {
+ if m.GetMediaByIDFunc != nil {
+ return m.GetMediaByIDFunc(ctx, id)
+ }
+ return nil, nil
+}
+func (m *MockMediaRepo) UpdateMedia(ctx context.Context, media *model.Media) error {
+ if m.UpdateMediaFunc != nil {
+ return m.UpdateMediaFunc(ctx, media)
+ }
+ return nil
+}
+func (m *MockMediaRepo) SoftDeleteMedia(ctx context.Context, id int64) error {
+ if m.SoftDeleteMediaFunc != nil {
+ return m.SoftDeleteMediaFunc(ctx, id)
+ }
+ return nil
+}
+func (m *MockMediaRepo) RestoreMedia(ctx context.Context, id int64) error {
+ if m.RestoreMediaFunc != nil {
+ return m.RestoreMediaFunc(ctx, id)
+ }
+ return nil
+}
+func (m *MockMediaRepo) HardDeleteMedia(ctx context.Context, id int64) error {
+ if m.HardDeleteMediaFunc != nil {
+ return m.HardDeleteMediaFunc(ctx, id)
+ }
+ return nil
+}
+func (m *MockMediaRepo) ListMedia(ctx context.Context, filter MediaFilter) ([]model.Media, error) {
+ if m.ListMediaFunc != nil {
+ return m.ListMediaFunc(ctx, filter)
+ }
+ return nil, nil
+}
+func (m *MockMediaRepo) ListDeletedMedia(ctx context.Context) ([]model.Media, error) {
+ if m.ListDeletedMediaFunc != nil {
+ return m.ListDeletedMediaFunc(ctx)
+ }
+ return nil, nil
+}
+func (m *MockMediaRepo) IncrementPlayCount(ctx context.Context, id int64) error {
+ if m.IncrementPlayCountFunc != nil {
+ return m.IncrementPlayCountFunc(ctx, id)
+ }
+ return nil
+}
+
+// MockTagRepo is a fake TagRepo.
+type MockTagRepo struct {
+ CreateTagFunc func(ctx context.Context, name string) (int64, error)
+ GetTagByIDFunc func(ctx context.Context, id int64) (*model.Tag, error)
+ GetTagByNameFunc func(ctx context.Context, name string) (*model.Tag, error)
+ ListTagsFunc func(ctx context.Context) ([]model.Tag, error)
+ DeleteTagFunc func(ctx context.Context, id int64) error
+ AssignTagFunc func(ctx context.Context, mediaID, tagID int64) error
+ RemoveTagFunc func(ctx context.Context, mediaID, tagID int64) error
+ ListTagsByMediaFunc func(ctx context.Context, mediaID int64) ([]model.Tag, error)
+}
+
+func (m *MockTagRepo) CreateTag(ctx context.Context, name string) (int64, error) {
+ if m.CreateTagFunc != nil {
+ return m.CreateTagFunc(ctx, name)
+ }
+ return 1, nil
+}
+func (m *MockTagRepo) GetTagByID(ctx context.Context, id int64) (*model.Tag, error) {
+ if m.GetTagByIDFunc != nil {
+ return m.GetTagByIDFunc(ctx, id)
+ }
+ return nil, nil
+}
+func (m *MockTagRepo) GetTagByName(ctx context.Context, name string) (*model.Tag, error) {
+ if m.GetTagByNameFunc != nil {
+ return m.GetTagByNameFunc(ctx, name)
+ }
+ return nil, nil
+}
+func (m *MockTagRepo) ListTags(ctx context.Context) ([]model.Tag, error) {
+ if m.ListTagsFunc != nil {
+ return m.ListTagsFunc(ctx)
+ }
+ return nil, nil
+}
+func (m *MockTagRepo) DeleteTag(ctx context.Context, id int64) error {
+ if m.DeleteTagFunc != nil {
+ return m.DeleteTagFunc(ctx, id)
+ }
+ return nil
+}
+func (m *MockTagRepo) AssignTag(ctx context.Context, mediaID, tagID int64) error {
+ if m.AssignTagFunc != nil {
+ return m.AssignTagFunc(ctx, mediaID, tagID)
+ }
+ return nil
+}
+func (m *MockTagRepo) RemoveTag(ctx context.Context, mediaID, tagID int64) error {
+ if m.RemoveTagFunc != nil {
+ return m.RemoveTagFunc(ctx, mediaID, tagID)
+ }
+ return nil
+}
+func (m *MockTagRepo) ListTagsByMedia(ctx context.Context, mediaID int64) ([]model.Tag, error) {
+ if m.ListTagsByMediaFunc != nil {
+ return m.ListTagsByMediaFunc(ctx, mediaID)
+ }
+ return nil, nil
+}
+
+// MockFavoriteRepo is a fake FavoriteRepo.
+type MockFavoriteRepo struct {
+ ToggleFavoriteFunc func(ctx context.Context, userID, mediaID int64) (bool, error)
+ IsFavoriteFunc func(ctx context.Context, userID, mediaID int64) (bool, error)
+ ListFavoritesByUserFunc func(ctx context.Context, userID int64) ([]model.Favorite, error)
+}
+
+func (m *MockFavoriteRepo) ToggleFavorite(ctx context.Context, userID, mediaID int64) (bool, error) {
+ if m.ToggleFavoriteFunc != nil {
+ return m.ToggleFavoriteFunc(ctx, userID, mediaID)
+ }
+ return false, nil
+}
+func (m *MockFavoriteRepo) IsFavorite(ctx context.Context, userID, mediaID int64) (bool, error) {
+ if m.IsFavoriteFunc != nil {
+ return m.IsFavoriteFunc(ctx, userID, mediaID)
+ }
+ return false, nil
+}
+func (m *MockFavoriteRepo) ListFavoritesByUser(ctx context.Context, userID int64) ([]model.Favorite, error) {
+ if m.ListFavoritesByUserFunc != nil {
+ return m.ListFavoritesByUserFunc(ctx, userID)
+ }
+ return nil, nil
+}
+
+// MockPlaybackProgressRepo is a fake PlaybackProgressRepo.
+type MockPlaybackProgressRepo struct {
+ UpsertProgressFunc func(ctx context.Context, progress *model.PlaybackProgress) error
+ GetProgressFunc func(ctx context.Context, userID, mediaID int64) (*model.PlaybackProgress, error)
+ ListProgressByUserFunc func(ctx context.Context, userID int64) ([]model.PlaybackProgress, error)
+}
+
+func (m *MockPlaybackProgressRepo) UpsertProgress(ctx context.Context, progress *model.PlaybackProgress) error {
+ if m.UpsertProgressFunc != nil {
+ return m.UpsertProgressFunc(ctx, progress)
+ }
+ return nil
+}
+func (m *MockPlaybackProgressRepo) GetProgress(ctx context.Context, userID, mediaID int64) (*model.PlaybackProgress, error) {
+ if m.GetProgressFunc != nil {
+ return m.GetProgressFunc(ctx, userID, mediaID)
+ }
+ return nil, nil
+}
+func (m *MockPlaybackProgressRepo) ListProgressByUser(ctx context.Context, userID int64) ([]model.PlaybackProgress, error) {
+ if m.ListProgressByUserFunc != nil {
+ return m.ListProgressByUserFunc(ctx, userID)
+ }
+ return nil, nil
+}
+
+// MockPlaybackAccumulatorRepo is a fake PlaybackAccumulatorRepo.
+type MockPlaybackAccumulatorRepo struct {
+ UpsertAccumulatorFunc func(ctx context.Context, acc *model.PlaybackAccumulator) error
+ GetAccumulatorFunc func(ctx context.Context, sessionID string, mediaID int64) (*model.PlaybackAccumulator, error)
+}
+
+func (m *MockPlaybackAccumulatorRepo) UpsertAccumulator(ctx context.Context, acc *model.PlaybackAccumulator) error {
+ if m.UpsertAccumulatorFunc != nil {
+ return m.UpsertAccumulatorFunc(ctx, acc)
+ }
+ return nil
+}
+func (m *MockPlaybackAccumulatorRepo) GetAccumulator(ctx context.Context, sessionID string, mediaID int64) (*model.PlaybackAccumulator, error) {
+ if m.GetAccumulatorFunc != nil {
+ return m.GetAccumulatorFunc(ctx, sessionID, mediaID)
+ }
+ return nil, nil
+}
+
+// MockSessionRepo is a fake SessionRepo.
+type MockSessionRepo struct {
+ CreateSessionFunc func(ctx context.Context, session *model.Session) error
+ GetSessionByIDFunc func(ctx context.Context, id string) (*model.Session, error)
+ DeleteSessionFunc func(ctx context.Context, id string) error
+ DeleteExpiredSessionsFunc func(ctx context.Context, now time.Time) error
+}
+
+func (m *MockSessionRepo) CreateSession(ctx context.Context, session *model.Session) error {
+ if m.CreateSessionFunc != nil {
+ return m.CreateSessionFunc(ctx, session)
+ }
+ return nil
+}
+func (m *MockSessionRepo) GetSessionByID(ctx context.Context, id string) (*model.Session, error) {
+ if m.GetSessionByIDFunc != nil {
+ return m.GetSessionByIDFunc(ctx, id)
+ }
+ return nil, nil
+}
+func (m *MockSessionRepo) DeleteSession(ctx context.Context, id string) error {
+ if m.DeleteSessionFunc != nil {
+ return m.DeleteSessionFunc(ctx, id)
+ }
+ return nil
+}
+func (m *MockSessionRepo) DeleteExpiredSessions(ctx context.Context, now time.Time) error {
+ if m.DeleteExpiredSessionsFunc != nil {
+ return m.DeleteExpiredSessionsFunc(ctx, now)
+ }
+ return nil
+}
+
+// MockShareRepo is a fake ShareRepo.
+type MockShareRepo struct {
+ CreateShareFunc func(ctx context.Context, share *model.Share) error
+ GetShareByTokenFunc func(ctx context.Context, token string) (*model.Share, error)
+ ListSharesByMediaFunc func(ctx context.Context, mediaID int64) ([]model.Share, error)
+ UseShareFunc func(ctx context.Context, token string) error
+ DeleteShareFunc func(ctx context.Context, token string) error
+ DeleteExpiredSharesFunc func(ctx context.Context, now time.Time) error
+}
+
+func (m *MockShareRepo) CreateShare(ctx context.Context, share *model.Share) error {
+ if m.CreateShareFunc != nil {
+ return m.CreateShareFunc(ctx, share)
+ }
+ return nil
+}
+func (m *MockShareRepo) GetShareByToken(ctx context.Context, token string) (*model.Share, error) {
+ if m.GetShareByTokenFunc != nil {
+ return m.GetShareByTokenFunc(ctx, token)
+ }
+ return nil, nil
+}
+func (m *MockShareRepo) ListSharesByMedia(ctx context.Context, mediaID int64) ([]model.Share, error) {
+ if m.ListSharesByMediaFunc != nil {
+ return m.ListSharesByMediaFunc(ctx, mediaID)
+ }
+ return nil, nil
+}
+func (m *MockShareRepo) UseShare(ctx context.Context, token string) error {
+ if m.UseShareFunc != nil {
+ return m.UseShareFunc(ctx, token)
+ }
+ return nil
+}
+func (m *MockShareRepo) DeleteShare(ctx context.Context, token string) error {
+ if m.DeleteShareFunc != nil {
+ return m.DeleteShareFunc(ctx, token)
+ }
+ return nil
+}
+func (m *MockShareRepo) DeleteExpiredShares(ctx context.Context, now time.Time) error {
+ if m.DeleteExpiredSharesFunc != nil {
+ return m.DeleteExpiredSharesFunc(ctx, now)
+ }
+ return nil
+}
+
+// MockNoteRepo is a fake NoteRepo.
+type MockNoteRepo struct {
+ UpsertNoteFunc func(ctx context.Context, note *model.Note) error
+ GetNoteFunc func(ctx context.Context, mediaID, userID int64) (*model.Note, error)
+ DeleteNoteFunc func(ctx context.Context, mediaID, userID int64) error
+}
+
+func (m *MockNoteRepo) UpsertNote(ctx context.Context, note *model.Note) error {
+ if m.UpsertNoteFunc != nil {
+ return m.UpsertNoteFunc(ctx, note)
+ }
+ return nil
+}
+func (m *MockNoteRepo) GetNote(ctx context.Context, mediaID, userID int64) (*model.Note, error) {
+ if m.GetNoteFunc != nil {
+ return m.GetNoteFunc(ctx, mediaID, userID)
+ }
+ return nil, nil
+}
+func (m *MockNoteRepo) DeleteNote(ctx context.Context, mediaID, userID int64) error {
+ if m.DeleteNoteFunc != nil {
+ return m.DeleteNoteFunc(ctx, mediaID, userID)
+ }
+ return nil
+}