* Make `syncChaptersWithSource` use sqldelight Will break chapter list live update on current ui Co-Authored-By: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com> * Review Changes Co-authored-by: Ivan Iskandar <12537387+ivaniskandar@users.noreply.github.com> (cherry picked from commit 120943a8b37eaf847ca1073676a8293288c28e12) # Conflicts: # app/src/main/java/eu/kanade/domain/manga/model/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterSourceSync.kt # app/src/main/sqldelight/data/mangas.sq
76 lines
1.7 KiB
Plaintext
76 lines
1.7 KiB
Plaintext
import java.lang.String;
|
|
import kotlin.collections.List;
|
|
|
|
CREATE TABLE mangas(
|
|
_id INTEGER NOT NULL PRIMARY KEY,
|
|
source INTEGER NOT NULL,
|
|
url TEXT NOT NULL,
|
|
artist TEXT,
|
|
author TEXT,
|
|
description TEXT,
|
|
genre TEXT AS List<String>,
|
|
title TEXT NOT NULL,
|
|
status INTEGER NOT NULL,
|
|
thumbnail_url TEXT,
|
|
favorite INTEGER AS Boolean NOT NULL,
|
|
last_update INTEGER AS Long,
|
|
next_update INTEGER AS Long,
|
|
initialized INTEGER AS Boolean NOT NULL,
|
|
viewer INTEGER NOT NULL,
|
|
chapter_flags INTEGER NOT NULL,
|
|
cover_last_modified INTEGER AS Long NOT NULL,
|
|
date_added INTEGER AS Long NOT NULL,
|
|
filtered_scanlators TEXT AS List<String>
|
|
);
|
|
|
|
CREATE INDEX library_favorite_index ON mangas(favorite) WHERE favorite = 1;
|
|
CREATE INDEX mangas_url_index ON mangas(url);
|
|
|
|
getMangaById:
|
|
SELECT *
|
|
FROM mangas
|
|
WHERE _id = :id;
|
|
|
|
getSourceIdWithFavoriteCount:
|
|
SELECT
|
|
source,
|
|
count(*)
|
|
FROM mangas
|
|
WHERE favorite = 1
|
|
GROUP BY source;
|
|
|
|
getFavoriteBySourceId:
|
|
SELECT *
|
|
FROM mangas
|
|
WHERE favorite = 1
|
|
AND source = :sourceId;
|
|
|
|
resetViewerFlags:
|
|
UPDATE mangas
|
|
SET viewer = 0;
|
|
|
|
getSourceIdsWithNonLibraryManga:
|
|
SELECT source, COUNT(*) AS manga_count
|
|
FROM mangas
|
|
WHERE favorite = 0
|
|
GROUP BY source;
|
|
|
|
deleteMangasNotInLibraryBySourceIds:
|
|
DELETE FROM mangas
|
|
WHERE favorite = 0 AND source IN :sourceIdsAND AND _id NOT IN (
|
|
SELECT manga_id FROM merged WHERE manga_id != merge_id
|
|
);
|
|
|
|
deleteMangasNotInLibraryAndNotReadBySourceIds:
|
|
DELETE FROM mangas
|
|
WHERE favorite = 0 AND source IN :sourceIdsAND AND _id NOT IN (
|
|
SELECT manga_id FROM merged WHERE manga_id != merge_id
|
|
) AND _id NOT IN (
|
|
SELECT manga_id FROM chapters WHERE read = 1 OR last_page_read != 0
|
|
);
|
|
|
|
updateLastUpdate:
|
|
UPDATE mangas
|
|
SET last_update = :lastUpdate
|
|
WHERE _id = :mangaId;
|