feat: Add library ID support to media scanner and worker

Add default library ID functionality to improve library targeting
during media scans.

Service changes in internal/services/media_scanner.go:
- Add defaultLibraryID field to MediaScanner struct
- Add SetLibraryID() method to set default library
- Modify processMediaFile() to use defaultLibraryID when set
  - Prioritizes defaultLibraryID over folder-based library detection
  - Provides explicit library targeting for scans

Service changes in internal/services/worker.go:
- Add libraryUUID conversion from string to pgtype.UUID
- Call scanner.SetLibraryID() before ScanFolders()
  - Ensures scanner respects the job's library ID

These changes enable more precise library targeting during media scans,
allowing scans to be directed to specific libraries rather than relying
solely on folder-based detection.
This commit is contained in:
2026-03-01 00:29:39 -05:00
parent eb2da1e05b
commit c6fa217092
22 changed files with 230 additions and 206 deletions
+11 -7
View File
@@ -457,14 +457,18 @@ func (s *MediaScanner) processMediaFile(ctx context.Context, path string) (bool,
// Find library for this file's folder
var libraryID pgtype.UUID
for _, folder := range s.folders {
if strings.HasPrefix(path, folder) {
lib, err := s.db.GetLibraryByFolder(ctx, folder)
if err != nil {
return false, fmt.Errorf("failed to find library for folder %s: %v", folder, err)
if s.defaultLibraryID.Valid {
libraryID = s.defaultLibraryID
} else {
for _, folder := range s.folders {
if strings.HasPrefix(path, folder) {
lib, err := s.db.GetLibraryByFolder(ctx, folder)
if err != nil {
return false, fmt.Errorf("failed to find library for folder %s: %v", folder, err)
}
libraryID = lib.LibraryID
break
}
libraryID = lib.LibraryID
break
}
}