From 2de7dcf98fd6b38e81bbb6e70da0000bebd36310 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Thu, 30 Apr 2026 01:20:09 +0300 Subject: refactor: split repository.Store into focused interfaces --- internal/repository/mock.go | 7 ++++++- internal/repository/repository.go | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) (limited to 'internal/repository') diff --git a/internal/repository/mock.go b/internal/repository/mock.go index 1363906..5959586 100644 --- a/internal/repository/mock.go +++ b/internal/repository/mock.go @@ -10,7 +10,12 @@ import ( // compile-time checks. var ( - _ Store = (*MockStore)(nil) + _ Store = (*MockStore)(nil) + _ MediaServiceStore = (*MockStore)(nil) + _ AdminServiceStore = (*MockStore)(nil) + _ ProgressServiceStore = (*MockStore)(nil) + _ GCStore = (*MockStore)(nil) + _ ScannerStore = (*MockStore)(nil) ) // NewMockStore returns a MockStore with all no-op defaults. diff --git a/internal/repository/repository.go b/internal/repository/repository.go index 1f12c77..b93484c 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -23,6 +23,45 @@ type Store interface { NoteRepo } +// MediaServiceStore is the subset of Store required by service.MediaService. +type MediaServiceStore interface { + UserRepo + SetRepo + SetPermissionRepo + MediaRepo + TagRepo + FavoriteRepo + PlaybackProgressRepo + ShareRepo + NoteRepo +} + +// AdminServiceStore is the subset of Store required by service.AdminService. +type AdminServiceStore interface { + UserRepo + SetRepo + SetPermissionRepo + MediaRepo +} + +// ProgressServiceStore is the subset of Store required by service.ProgressService. +type ProgressServiceStore interface { + PlaybackProgressRepo + PlaybackAccumulatorRepo + MediaRepo +} + +// GCStore is the subset of Store required by service.GCWorker. +type GCStore interface { + MediaRepo +} + +// ScannerStore is the subset of Store required by scanner.FSScanner. +type ScannerStore interface { + SetRepo + MediaRepo +} + // UserRepo manages application users. type UserRepo interface { CreateUser(ctx context.Context, user *model.User) (int64, error) -- cgit v1.2.3