Update sizes with SQL, instead of a full rescan

This commit is contained in:
Deluan 2020-11-15 19:26:16 -05:00
parent 8bfaa0ad9d
commit cf90f0a245
3 changed files with 22 additions and 13 deletions

View File

@ -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 {

View File

@ -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 {

View File

@ -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)