diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-03 23:20:39 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-03 23:20:39 +0300 |
| commit | 1ef944f52a3dc7a82897fbefb7f567f965a3c505 (patch) | |
| tree | 8dc255dd5ff354ca11c548a37f4c781f74918e9d /internal | |
| parent | 003aee269bc73d5a0524c603585c567c9987916b (diff) | |
task 2 review fixes: narrow BrowseService and accessHelper store interfaces
Diffstat (limited to 'internal')
| -rw-r--r-- | internal/repository/mock.go | 10 | ||||
| -rw-r--r-- | internal/repository/repository.go | 8 | ||||
| -rw-r--r-- | internal/service/access.go | 2 | ||||
| -rw-r--r-- | internal/service/browse.go | 5 |
4 files changed, 22 insertions, 3 deletions
diff --git a/internal/repository/mock.go b/internal/repository/mock.go index 1e31021..533810b 100644 --- a/internal/repository/mock.go +++ b/internal/repository/mock.go @@ -17,6 +17,16 @@ var ( _ ProgressServiceStore = (*MockStore)(nil) _ GCStore = (*MockStore)(nil) _ ScannerStore = (*MockStore)(nil) + _ AccessHelperStore = (*MockStore)(nil) + _ BrowseServiceStore = (*MockStore)(nil) + _ WriteServiceStore = (*MockStore)(nil) + _ ShareServiceStore = (*MockStore)(nil) + _ TagServiceStore = (*MockStore)(nil) + _ FavoriteServiceStore = (*MockStore)(nil) + _ NoteServiceStore = (*MockStore)(nil) + _ TrashServiceStore = (*MockStore)(nil) + _ UserAdminServiceStore = (*MockStore)(nil) + _ PermissionAdminServiceStore = (*MockStore)(nil) ) // NewMockStore returns a MockStore with all no-op defaults. diff --git a/internal/repository/repository.go b/internal/repository/repository.go index 59ebb3b..03d8f1c 100644 --- a/internal/repository/repository.go +++ b/internal/repository/repository.go @@ -44,6 +44,14 @@ type AdminServiceStore interface { MediaRepo } +// AccessHelperStore is the subset of Store required by service.accessHelper. +type AccessHelperStore interface { + UserRepo + MediaRepo + SetRepo + SetPermissionRepo +} + // ProgressServiceStore is the subset of Store required by service.ProgressService. type ProgressServiceStore interface { PlaybackProgressRepo diff --git a/internal/service/access.go b/internal/service/access.go index 891fd98..a6549ef 100644 --- a/internal/service/access.go +++ b/internal/service/access.go @@ -10,7 +10,7 @@ import ( // accessHelper encapsulates permission checks used by media sub-services. type accessHelper struct { - store repository.MediaServiceStore + store repository.AccessHelperStore } // checkSetPermission verifies that a user has the required role on a set. diff --git a/internal/service/browse.go b/internal/service/browse.go index 9e2f42c..aa82049 100644 --- a/internal/service/browse.go +++ b/internal/service/browse.go @@ -19,7 +19,7 @@ import ( // browseService handles read-only browsing and media streaming operations. type browseService struct { - store repository.MediaServiceStore + store repository.BrowseServiceStore clock clock.Clock mediaRoot string thumbGen thumb.Generator @@ -28,7 +28,7 @@ type browseService struct { } // NewBrowseService creates a BrowseService. -func NewBrowseService(store repository.MediaServiceStore, clk clock.Clock, mediaRoot string, thumbGen thumb.Generator, prober probe.Prober, helper *accessHelper) MediaBrowseService { +func NewBrowseService(store repository.BrowseServiceStore, clk clock.Clock, mediaRoot string, thumbGen thumb.Generator, prober probe.Prober, helper *accessHelper) MediaBrowseService { return &browseService{ store: store, clock: clk, @@ -338,6 +338,7 @@ func (s *browseService) BrowseSet(ctx context.Context, setID, userID int64, pare var folders []BrowseFolder for name, fc := range folderMap { + // Flatten: show the lone file at the current level. total := len(fc.files) + len(fc.subfolders) if total == 1 && len(fc.files) == 1 { items = append(items, fc.files[0]) |
