package migrationsimport ("context""database/sql""github.com/pressly/goose/v3")func init() {goose.AddMigrationContext(upAddLibraryStats, downAddLibraryStats)}func upAddLibraryStats(ctx context.Context, tx *sql.Tx) error {_, err := tx.ExecContext(ctx, `alter table library add column total_songs integer default 0 not null;alter table library add column total_albums integer default 0 not null;alter table library add column total_artists integer default 0 not null;alter table library add column total_folders integer default 0 not null;alter table library add column total_files integer default 0 not null;alter table library add column total_missing_files integer default 0 not null;alter table library add column total_size integer default 0 not null;update library settotal_songs = (select count(*) from media_file where library_id = library.id and missing = 0),total_albums = (select count(*) from album where library_id = library.id and missing = 0),total_artists = (select count(*) from library_artist lajoin artist a on la.artist_id = a.idwhere la.library_id = library.id and a.missing = 0),total_folders = (select count(*) from folder where library_id = library.id and missing = 0 and num_audio_files > 0),total_files = (select ifnull(sum(num_audio_files + num_playlists + json_array_length(image_files)),0)from folder where library_id = library.id and missing = 0),total_missing_files = (select count(*) from media_file where library_id = library.id and missing = 1),total_size = (select ifnull(sum(size),0) from album where library_id = library.id and missing = 0);`)return err}func downAddLibraryStats(_ context.Context, _ *sql.Tx) error {return nil}