diff options
| -rw-r--r-- | internal/repository/mock.go | 7 | ||||
| -rw-r--r-- | internal/repository/repository.go | 39 | ||||
| -rw-r--r-- | internal/scanner/scanner.go | 4 | ||||
| -rw-r--r-- | internal/scanner/scanner_test.go | 2 | ||||
| -rw-r--r-- | internal/service/admin.go | 4 | ||||
| -rw-r--r-- | internal/service/gc.go | 4 | ||||
| -rw-r--r-- | internal/service/media.go | 4 | ||||
| -rw-r--r-- | internal/service/progress.go | 4 |
8 files changed, 56 insertions, 12 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) diff --git a/internal/scanner/scanner.go b/internal/scanner/scanner.go index b44955e..ec7638e 100644 --- a/internal/scanner/scanner.go +++ b/internal/scanner/scanner.go @@ -22,7 +22,7 @@ type Scanner interface { // FSScanner recursively scans media root for sets and media files. type FSScanner struct { - store repository.Store + store repository.ScannerStore prober probe.Prober thumbGen thumb.Generator clock clock.Clock @@ -31,7 +31,7 @@ type FSScanner struct { } // NewFSScanner creates a filesystem scanner with injected dependencies. -func NewFSScanner(store repository.Store, prober probe.Prober, thumbGen thumb.Generator, clk clock.Clock, mediaRoot string) Scanner { +func NewFSScanner(store repository.ScannerStore, prober probe.Prober, thumbGen thumb.Generator, clk clock.Clock, mediaRoot string) Scanner { return &FSScanner{ store: store, prober: prober, diff --git a/internal/scanner/scanner_test.go b/internal/scanner/scanner_test.go index 4accfb7..b924c85 100644 --- a/internal/scanner/scanner_test.go +++ b/internal/scanner/scanner_test.go @@ -91,7 +91,7 @@ func (m *mockFS) WalkDir(root string, walkFn fs.WalkDirFunc) error { return nil } -func newTestScanner(store repository.Store, prober probe.Prober, gen thumb.Generator, clk clock.Clock, filesystem FS) *FSScanner { +func newTestScanner(store repository.ScannerStore, prober probe.Prober, gen thumb.Generator, clk clock.Clock, filesystem FS) *FSScanner { return &FSScanner{ store: store, prober: prober, diff --git a/internal/service/admin.go b/internal/service/admin.go index d3a25c5..9b443cb 100644 --- a/internal/service/admin.go +++ b/internal/service/admin.go @@ -12,13 +12,13 @@ import ( // adminService is the concrete implementation of AdminService. type adminService struct { - store repository.Store + store repository.AdminServiceStore clock clock.Clock hasher auth.Hasher } // NewAdminService creates a concrete AdminService. -func NewAdminService(store repository.Store, clk clock.Clock, hasher auth.Hasher) AdminService { +func NewAdminService(store repository.AdminServiceStore, clk clock.Clock, hasher auth.Hasher) AdminService { return &adminService{ store: store, clock: clk, diff --git a/internal/service/gc.go b/internal/service/gc.go index 5ac4120..4078893 100644 --- a/internal/service/gc.go +++ b/internal/service/gc.go @@ -15,7 +15,7 @@ import ( // GCWorker is a background worker that hard-deletes soft-deleted media older than a threshold. type GCWorker struct { - store repository.Store + store repository.GCStore clock clock.Clock interval time.Duration age time.Duration @@ -28,7 +28,7 @@ type GCWorker struct { } // NewGCWorker creates a GCWorker. Use WithAge and WithInterval to customise. -func NewGCWorker(store repository.Store, clk clock.Clock, mediaRoot string, interval time.Duration, logger *slog.Logger) *GCWorker { +func NewGCWorker(store repository.GCStore, clk clock.Clock, mediaRoot string, interval time.Duration, logger *slog.Logger) *GCWorker { return &GCWorker{ store: store, clock: clk, diff --git a/internal/service/media.go b/internal/service/media.go index aba3804..e10d5ff 100644 --- a/internal/service/media.go +++ b/internal/service/media.go @@ -19,13 +19,13 @@ import ( // mediaService is the concrete implementation of MediaService. type mediaService struct { - store repository.Store + store repository.MediaServiceStore clock clock.Clock mediaRoot string } // NewMediaService creates a concrete MediaService. -func NewMediaService(store repository.Store, clk clock.Clock, mediaRoot string) MediaService { +func NewMediaService(store repository.MediaServiceStore, clk clock.Clock, mediaRoot string) MediaService { return &mediaService{ store: store, clock: clk, diff --git a/internal/service/progress.go b/internal/service/progress.go index 2480dae..7a6bae4 100644 --- a/internal/service/progress.go +++ b/internal/service/progress.go @@ -11,12 +11,12 @@ import ( // progressService is the concrete implementation of ProgressService. type progressService struct { - store repository.Store + store repository.ProgressServiceStore clock clock.Clock } // NewProgressService creates a concrete ProgressService. -func NewProgressService(store repository.Store, clk clock.Clock) ProgressService { +func NewProgressService(store repository.ProgressServiceStore, clk clock.Clock) ProgressService { return &progressService{ store: store, clock: clk, |
