summaryrefslogtreecommitdiff
path: root/internal/repository
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-30 01:20:09 +0300
committerPaul Buetow <paul@buetow.org>2026-04-30 01:20:09 +0300
commit2de7dcf98fd6b38e81bbb6e70da0000bebd36310 (patch)
tree5d77266a801bd0007db6db0ca9b480adcc933601 /internal/repository
parentb94ec8410d7a7ef5bb14bee2f9930abda52f28fe (diff)
refactor: split repository.Store into focused interfaces
Diffstat (limited to 'internal/repository')
-rw-r--r--internal/repository/mock.go7
-rw-r--r--internal/repository/repository.go39
2 files changed, 45 insertions, 1 deletions
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)