package migrationsimport ("context""database/sql""github.com/navidrome/navidrome/log""github.com/pressly/goose/v3")func init() {goose.AddMigrationContext(Up20200130083147, Down20200130083147)}func Up20200130083147(ctx context.Context, tx *sql.Tx) error {log.Info("Creating DB Schema")_, err := tx.ExecContext(ctx, `create table if not exists album(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 integer default 0 not null,genre varchar(255) default '' not null,created_at datetime,updated_at datetime);create index if not exists album_artiston album (artist);create index if not exists album_artist_idon album (artist_id);create index if not exists album_genreon album (genre);create index if not exists album_nameon album (name);create index if not exists album_yearon album (year);create table if not exists annotation(ann_id varchar(255) not nullprimary key,user_id varchar(255) default '' not null,item_id varchar(255) default '' not null,item_type varchar(255) default '' not null,play_count integer,play_date datetime,rating integer,starred bool default FALSE not null,starred_at datetime,unique (user_id, item_id, item_type));create index if not exists annotation_play_counton annotation (play_count);create index if not exists annotation_play_dateon annotation (play_date);create index if not exists annotation_ratingon annotation (rating);create index if not exists annotation_starredon annotation (starred);create table if not exists artist(id varchar(255) not nullprimary key,name varchar(255) default '' not null,album_count integer default 0 not null);create index if not exists artist_nameon artist (name);create table if not exists media_file(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 integer 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);create index if not exists media_file_album_idon media_file (album_id);create index if not exists media_file_genreon media_file (genre);create index if not exists media_file_pathon media_file (path);create index if not exists media_file_titleon media_file (title);create table if not exists playlist(id varchar(255) not nullprimary key,name varchar(255) default '' not null,comment varchar(255) default '' not null,duration integer default 0 not null,owner varchar(255) default '' not null,public bool default FALSE not null,tracks text not null);create index if not exists playlist_nameon playlist (name);create table if not exists property(id varchar(255) not nullprimary key,value varchar(255) default '' not null);create table if not exists search(id varchar(255) not nullprimary key,"table" varchar(255) default '' not null,full_text varchar(255) default '' not null);create index if not exists search_full_texton search (full_text);create index if not exists search_tableon search ("table");create table if not exists user(id varchar(255) not nullprimary key,user_name varchar(255) default '' not nullunique,name varchar(255) default '' not null,email varchar(255) default '' not nullunique,password varchar(255) default '' not null,is_admin bool default FALSE not null,last_login_at datetime,last_access_at datetime,created_at datetime not null,updated_at datetime not null);`)return err}func Down20200130083147(_ context.Context, _ *sql.Tx) error {return nil}