use crate::persistence::Tokenizer;
#[derive(Default)]
pub struct SqliteSetupArgs {
pub tokenizer: Tokenizer,
pub output: String,
}
impl SqliteSetupArgs {
pub fn create_table_sql(&self) -> Vec<String> {
let mut all_creates: Vec<String> = Vec::new();
all_creates.push(format!(
"CREATE VIRTUAL TABLE if not exists search_release_groups USING fts5(id, artists, title, genres, priority UNINDEXED, tokenize=\"{}\");",
self.tokenizer
));
all_creates.push(
"CREATE TABLE if not exists release_groups (id TEXT PRIMARY KEY, primary_type TEXT, json_data JSON);"
.to_string(),
);
all_creates.push(
"CREATE INDEX release_group_primary_type_idx on release_groups (primary_type);"
.to_string(),
);
all_creates.push("CREATE TABLE if not exists artist_release_groups (artist_id, release_group_id, PRIMARY KEY (artist_id, release_group_id));".to_string());
all_creates.push("CREATE TABLE if not exists release_group_urls (release_group_id, url_id, url, url_type, PRIMARY KEY(release_group_id, url_id))".to_string());
all_creates.push(
"CREATE INDEX release_group_id_idx on release_group_urls (release_group_id);"
.to_string(),
);
all_creates.push(
"CREATE TABLE if not exists artist_names (id TEXT PRIMARY KEY, name TEXT);".to_string(),
);
all_creates
}
}