From af5624f7168b338c7302a6abb64e70a03baef03e Mon Sep 17 00:00:00 2001 From: sentriz Date: Wed, 5 Jun 2019 19:14:41 +0100 Subject: [PATCH] delete albums without tracks and artists without albums --- scanner/scanner.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/scanner/scanner.go b/scanner/scanner.go index 42137aa..1db2ddc 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -122,6 +122,7 @@ func (s *Scanner) Start() error { if err != nil { return errors.Wrap(err, "scanning tracks") } + // delete tracks not on filesystem var deleted uint for _, track := range tracks { _, ok := s.seenTracks[track.ID] @@ -130,6 +131,21 @@ func (s *Scanner) Start() error { deleted++ } } + // then, delete albums without tracks + s.tx.Exec(` + DELETE FROM albums + WHERE tag_artist_id NOT NULL AND + (SELECT count(id) + FROM tracks + WHERE album_id = albums.id) = 0; + `) + // then, delete artists without albums + s.tx.Exec(` + DELETE FROM artists + WHERE (SELECT count(id) + FROM albums + WHERE tag_artist_id = artists.id) = 0; + `) log.Printf("finished cleaning in %s, -%d tracks\n", time.Since(start), deleted,