Add all images found for each album in the database

This commit is contained in:
Deluan
2022-12-19 13:09:06 -05:00
committed by Deluan Quintão
parent 2f90fc9bd4
commit 0130c6dc13
7 changed files with 72 additions and 17 deletions
+8 -8
View File
@@ -108,10 +108,10 @@ func (s *TagScanner) Scan(ctx context.Context, lastModifiedSince time.Time, prog
progress <- folderStats.AudioFilesCount
allFSDirs[folderStats.Path] = folderStats
if s.folderHasChanged(ctx, folderStats, allDBDirs, lastModifiedSince) {
if s.folderHasChanged(folderStats, allDBDirs, lastModifiedSince) {
changedDirs = append(changedDirs, folderStats.Path)
log.Debug("Processing changed folder", "dir", folderStats.Path)
err := s.processChangedDir(ctx, folderStats.Path, fullScan)
err := s.processChangedDir(ctx, allFSDirs, folderStats.Path, fullScan)
if err != nil {
log.Error("Error updating folder in the DB", "dir", folderStats.Path, err)
}
@@ -130,7 +130,7 @@ func (s *TagScanner) Scan(ctx context.Context, lastModifiedSince time.Time, prog
}
for _, dir := range deletedDirs {
err := s.processDeletedDir(ctx, dir)
err := s.processDeletedDir(ctx, allFSDirs, dir)
if err != nil {
log.Error("Error removing deleted folder from DB", "dir", dir, err)
}
@@ -201,7 +201,7 @@ func (s *TagScanner) getDBDirTree(ctx context.Context) (map[string]struct{}, err
return resp, nil
}
func (s *TagScanner) folderHasChanged(ctx context.Context, folder dirStats, dbDirs map[string]struct{}, lastModified time.Time) bool {
func (s *TagScanner) folderHasChanged(folder dirStats, dbDirs map[string]struct{}, lastModified time.Time) bool {
_, inDB := dbDirs[folder.Path]
// If is a new folder with at least one song OR it was modified after lastModified
return (!inDB && (folder.AudioFilesCount > 0)) || folder.ModTime.After(lastModified)
@@ -223,9 +223,9 @@ func (s *TagScanner) getDeletedDirs(ctx context.Context, fsDirs dirMap, dbDirs m
return deleted
}
func (s *TagScanner) processDeletedDir(ctx context.Context, dir string) error {
func (s *TagScanner) processDeletedDir(ctx context.Context, allFSDirs dirMap, dir string) error {
start := time.Now()
buffer := newRefresher(ctx, s.ds)
buffer := newRefresher(ctx, s.ds, allFSDirs)
mfs, err := s.ds.MediaFile(ctx).FindAllByPath(dir)
if err != nil {
@@ -248,9 +248,9 @@ func (s *TagScanner) processDeletedDir(ctx context.Context, dir string) error {
return err
}
func (s *TagScanner) processChangedDir(ctx context.Context, dir string, fullScan bool) error {
func (s *TagScanner) processChangedDir(ctx context.Context, allFSDirs dirMap, dir string, fullScan bool) error {
start := time.Now()
buffer := newRefresher(ctx, s.ds)
buffer := newRefresher(ctx, s.ds, allFSDirs)
// Load folder's current tracks from DB into a map
currentTracks := map[string]model.MediaFile{}