From debdfd13ad1c6cc2a7302cc994a47f5da26668bf Mon Sep 17 00:00:00 2001 From: sentriz Date: Sat, 2 May 2020 23:07:34 +0100 Subject: [PATCH] scanner: ormise clean artists --- server/db/model.go | 3 +++ server/scanner/scanner.go | 13 ++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/server/db/model.go b/server/db/model.go index 9320cfe..b613bf3 100644 --- a/server/db/model.go +++ b/server/db/model.go @@ -2,6 +2,9 @@ //nolint:lll package db +// see this db fiddle to mess around with the schema +// https://www.db-fiddle.com/f/wJ7z8L7mu6ZKaYmWk1xr1p/5 + import ( "path" "strconv" diff --git a/server/scanner/scanner.go b/server/scanner/scanner.go index c888bdd..cfc1919 100644 --- a/server/scanner/scanner.go +++ b/server/scanner/scanner.go @@ -132,11 +132,14 @@ func (s *Scanner) cleanFolders() (int, error) { } func (s *Scanner) cleanArtists() (int, error) { - q := s.db.Exec(` - DELETE FROM artists - WHERE NOT EXISTS ( SELECT 1 FROM albums - WHERE albums.tag_artist_id=artists.id ) - `) + sub := s.db. + Select("1"). + Model(&db.Album{}). + Where("albums.tag_artist_id=artists.id"). + SubQuery() + q := s.db. + Where("NOT EXISTS ?", sub). + Delete(&db.Artist{}) return int(q.RowsAffected), q.Error }