diff --git a/db/migration/20201010162350_add_album_size.go b/db/migration/20201010162350_add_album_size.go index 3963796f..50c35217 100644 --- a/db/migration/20201010162350_add_album_size.go +++ b/db/migration/20201010162350_add_album_size.go @@ -16,12 +16,15 @@ alter table album add size integer default 0 not null; create index if not exists album_size on album(size); - `) - if err != nil { - return err - } - notice(tx, "A full rescan will be performed to calculate album sizes.") - return forceFullRescan(tx) + +update album set size = ifnull(( +select sum(f.size) +from media_file f +where f.album_id = album.id +), 0) +where id not null;`) + + return err } func Down20201010162350(tx *sql.Tx) error { diff --git a/db/migration/20201012210022_add_artist_playlist_size.go b/db/migration/20201012210022_add_artist_playlist_size.go index 5dd67609..0d731402 100644 --- a/db/migration/20201012210022_add_artist_playlist_size.go +++ b/db/migration/20201012210022_add_artist_playlist_size.go @@ -17,6 +17,13 @@ alter table artist create index if not exists artist_size on artist(size); +update artist set size = ifnull(( + select sum(f.size) + from album f + where f.album_artist_id = artist.id +), 0) +where id not null; + alter table playlist add size integer default 0 not null; create index if not exists playlist_size @@ -29,11 +36,7 @@ update playlist set size = ifnull(( where pt.playlist_id = playlist.id ), 0);`) - if err != nil { - return err - } - notice(tx, "A full rescan will be performed to calculate artists (discographies) and playlists sizes.") - return forceFullRescan(tx) + return err } func Down20201012210022(tx *sql.Tx) error { diff --git a/db/migration/migration.go b/db/migration/migration.go index 037c19c2..1e1ef800 100644 --- a/db/migration/migration.go +++ b/db/migration/migration.go @@ -29,9 +29,12 @@ update media_file set updated_at = '0001-01-01'; return err } -var once sync.Once +var ( + once sync.Once + initialized bool +) -func isDBInitialized(tx *sql.Tx) (initialized bool) { +func isDBInitialized(tx *sql.Tx) bool { once.Do(func() { rows, err := tx.Query("select count(*) from property where id=?", consts.InitialSetupFlagKey) checkErr(err)