package migrationsimport ("context""database/sql""github.com/pressly/goose/v3")func init() {goose.AddMigrationContext(Up20200220143731, Down20200220143731)}func Up20200220143731(ctx context.Context, tx *sql.Tx) error {notice(ctx, tx, "This migration will force the next scan to be a full rescan!")_, err := tx.ExecContext(ctx, `create table media_file_dg_tmp(id varchar(255) not nullprimary key,path varchar(255) default '' not null,title varchar(255) default '' not null,album varchar(255) default '' not null,artist varchar(255) default '' not null,artist_id varchar(255) default '' not null,album_artist varchar(255) default '' not null,album_id varchar(255) default '' not null,has_cover_art bool default FALSE not null,track_number integer default 0 not null,disc_number integer default 0 not null,year integer default 0 not null,size integer default 0 not null,suffix varchar(255) default '' not null,duration real default 0 not null,bit_rate integer default 0 not null,genre varchar(255) default '' not null,compilation bool default FALSE not null,created_at datetime,updated_at datetime);insert into media_file_dg_tmp(id, path, title, album, artist, artist_id, album_artist, album_id, has_cover_art, track_number, disc_number, year, size, suffix, duration, bit_rate, genre, compilation, created_at, updated_at) select id, path, title, album, artist, artist_id, album_artist, album_id, has_cover_art, track_number, disc_number, year, size, suffix, duration, bit_rate, genre, compilation, created_at, updated_at from media_file;drop table media_file;alter table media_file_dg_tmp rename to media_file;create index media_file_album_idon media_file (album_id);create index media_file_genreon media_file (genre);create index media_file_pathon media_file (path);create index media_file_titleon media_file (title);create table album_dg_tmp(id varchar(255) not nullprimary key,name varchar(255) default '' not null,artist_id varchar(255) default '' not null,cover_art_path varchar(255) default '' not null,cover_art_id varchar(255) default '' not null,artist varchar(255) default '' not null,album_artist varchar(255) default '' not null,year integer default 0 not null,compilation bool default FALSE not null,song_count integer default 0 not null,duration real default 0 not null,genre varchar(255) default '' not null,created_at datetime,updated_at datetime);insert into album_dg_tmp(id, name, artist_id, cover_art_path, cover_art_id, artist, album_artist, year, compilation, song_count, duration, genre, created_at, updated_at) select id, name, artist_id, cover_art_path, cover_art_id, artist, album_artist, year, compilation, song_count, duration, genre, created_at, updated_at from album;drop table album;alter table album_dg_tmp rename to album;create index album_artiston album (artist);create index album_artist_idon album (artist_id);create index album_genreon album (genre);create index album_nameon album (name);create index album_yearon album (year);create table playlist_dg_tmp(id varchar(255) not nullprimary key,name varchar(255) default '' not null,comment varchar(255) default '' not null,duration real default 0 not null,owner varchar(255) default '' not null,public bool default FALSE not null,tracks text not null);insert into playlist_dg_tmp(id, name, comment, duration, owner, public, tracks) select id, name, comment, duration, owner, public, tracks from playlist;drop table playlist;alter table playlist_dg_tmp rename to playlist;create index playlist_nameon playlist (name);-- Force a full rescandelete from property where id like 'LastScan%';update media_file set updated_at = '0001-01-01';`)return err}func Down20200220143731(_ context.Context, _ *sql.Tx) error {return nil}