diff --git a/app/src/main/sqldelight/tachiyomi/migrations/17.sqm b/app/src/main/sqldelight/tachiyomi/migrations/17.sqm index de7fa26866..15afa33831 100644 --- a/app/src/main/sqldelight/tachiyomi/migrations/17.sqm +++ b/app/src/main/sqldelight/tachiyomi/migrations/17.sqm @@ -1,4 +1,5 @@ import kotlin.Boolean; +import kotlin.Float; import kotlin.Long; CREATE TABLE extension_repos ( @@ -9,13 +10,14 @@ CREATE TABLE extension_repos ( signing_key_fingerprint TEXT UNIQUE NOT NULL ); ---- << Rename hideTitle to hide_title +--- >> Rename hideTitle to hide_title DROP INDEX IF EXISTS mangas_url_index; DROP INDEX IF EXISTS library_favorite_index; +DROP INDEX IF EXISTS chapters_manga_id_index; +DROP INDEX IF EXISTS chapters_unread_by_manga_index; +DROP INDEX IF EXISTS history_history_chapter_id_index; -ALTER TABLE mangas -RENAME TO mangas_tmp; - +ALTER TABLE mangas RENAME TO mangas_tmp; CREATE TABLE mangas( _id INTEGER NOT NULL PRIMARY KEY, source INTEGER NOT NULL, @@ -45,8 +47,100 @@ SELECT initialized, viewer, hideTitle, chapter_flags, date_added, filtered_scanlators, update_strategy FROM mangas_tmp; -DROP TABLE mangas_tmp; +ALTER TABLE chapters RENAME TO chapters_tmp; +CREATE TABLE chapters( + _id INTEGER NOT NULL PRIMARY KEY, + manga_id INTEGER NOT NULL, + url TEXT NOT NULL, + name TEXT NOT NULL, + scanlator TEXT, + read INTEGER AS Boolean NOT NULL, + bookmark INTEGER AS Boolean NOT NULL, + last_page_read INTEGER NOT NULL, + pages_left INTEGER NOT NULL, + chapter_number REAL AS Float NOT NULL, + source_order INTEGER NOT NULL, + date_fetch INTEGER AS Long NOT NULL, + date_upload INTEGER AS Long NOT NULL, + FOREIGN KEY(manga_id) REFERENCES mangas (_id) + ON DELETE CASCADE +); +INSERT INTO chapters + (_id, manga_id, url, name, scanlator, read, bookmark, last_page_read, pages_left, chapter_number, source_order, + date_fetch, date_upload) +SELECT + _id, manga_id, url, name, scanlator, read, bookmark, last_page_read, pages_left, chapter_number, source_order, + date_fetch, date_upload +FROM chapters_tmp; -CREATE INDEX mangas_url_index ON mangas(url); +ALTER TABLE history RENAME TO history_tmp; +CREATE TABLE history( + history_id INTEGER NOT NULL PRIMARY KEY, + history_chapter_id INTEGER NOT NULL UNIQUE, + history_last_read INTEGER AS Long, + history_time_read INTEGER AS Long, + FOREIGN KEY(history_chapter_id) REFERENCES chapters (_id) + ON DELETE CASCADE +); + +INSERT INTO history + (history_id, history_chapter_id, history_last_read, history_time_read) +SELECT + history_id, history_chapter_id, history_last_read, history_time_read +FROM history_tmp; + +ALTER TABLE mangas_categories RENAME TO mangas_categories_tmp; +CREATE TABLE mangas_categories( + _id INTEGER NOT NULL PRIMARY KEY, + manga_id INTEGER NOT NULL, + category_id INTEGER NOT NULL, + FOREIGN KEY(category_id) REFERENCES categories (_id) + ON DELETE CASCADE, + FOREIGN KEY(manga_id) REFERENCES mangas (_id) + ON DELETE CASCADE +); +INSERT INTO mangas_categories + (_id, manga_id, category_id) +SELECT + _id, manga_id, category_id +FROM mangas_categories_tmp; + +ALTER TABLE manga_sync RENAME TO manga_sync_tmp; +CREATE TABLE manga_sync( + _id INTEGER NOT NULL PRIMARY KEY, + manga_id INTEGER NOT NULL, + sync_id INTEGER NOT NULL, + remote_id INTEGER NOT NULL, + library_id INTEGER, + title TEXT NOT NULL, + last_chapter_read REAL NOT NULL, + total_chapters INTEGER NOT NULL, + status INTEGER NOT NULL, + score REAL AS Float NOT NULL, + remote_url TEXT NOT NULL, + start_date INTEGER AS Long NOT NULL, + finish_date INTEGER AS Long NOT NULL, + UNIQUE (manga_id, sync_id) ON CONFLICT REPLACE, + FOREIGN KEY(manga_id) REFERENCES mangas (_id) + ON DELETE CASCADE +); +INSERT INTO manga_sync + (_id, manga_id, sync_id, remote_id, library_id, title, last_chapter_read, total_chapters, status, score, remote_url, + start_date, finish_date) +SELECT + _id, manga_id, sync_id, remote_id, library_id, title, last_chapter_read, total_chapters, status, score, remote_url, + start_date, finish_date +FROM manga_sync_tmp; + +CREATE INDEX chapters_manga_id_index ON chapters(manga_id); +CREATE INDEX chapters_unread_by_manga_index ON chapters(manga_id, read) WHERE read = 0; +CREATE INDEX history_history_chapter_id_index ON history(history_chapter_id); CREATE INDEX library_favorite_index ON mangas(favorite) WHERE favorite = 1; ---- >> Rename hideTitle to hide_title +CREATE INDEX mangas_url_index ON mangas(url); + +DROP TABLE IF EXISTS mangas_tmp; +DROP TABLE IF EXISTS chapters_tmp; +DROP TABLE IF EXISTS history_tmp; +DROP TABLE IF EXISTS mangas_categories_tmp; +DROP TABLE IF EXISTS manga_sync_tmp; +--- << Rename hideTitle to hide_title