* Use SQLDelight in Backup/Restore * Use CoroutineWorker (cherry picked from commit fd5da2de3ab294988e8408077977f776cca5299a) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/AbstractBackupManager.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupManager.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupCategory.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/database/DatabaseHelper.kt # app/src/main/java/eu/kanade/tachiyomi/data/database/queries/HistoryQueries.kt # app/src/main/java/eu/kanade/tachiyomi/source/model/SManga.kt # app/src/main/sqldelight/data/categories.sq # app/src/main/sqldelight/data/chapters.sq
69 lines
1.3 KiB
Plaintext
69 lines
1.3 KiB
Plaintext
import java.util.Date;
|
|
|
|
CREATE TABLE history(
|
|
_id INTEGER NOT NULL PRIMARY KEY,
|
|
chapter_id INTEGER NOT NULL UNIQUE,
|
|
last_read INTEGER AS Date,
|
|
time_read INTEGER NOT NULL,
|
|
FOREIGN KEY(chapter_id) REFERENCES chapters (_id)
|
|
ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE INDEX history_history_chapter_id_index ON history(chapter_id);
|
|
|
|
getHistoryByMangaId:
|
|
SELECT
|
|
H._id,
|
|
H.chapter_id,
|
|
H.last_read,
|
|
H.time_read
|
|
FROM history H
|
|
JOIN chapters C
|
|
ON H.chapter_id = C._id
|
|
WHERE C.manga_id = :mangaId AND C._id = H.chapter_id;
|
|
|
|
getHistoryByChapterUrl:
|
|
SELECT
|
|
H._id,
|
|
H.chapter_id,
|
|
H.last_read,
|
|
H.time_read
|
|
FROM history H
|
|
JOIN chapters C
|
|
ON H.chapter_id = C._id
|
|
WHERE C.url = :chapterUrl AND C._id = H.chapter_id;
|
|
|
|
resetHistoryById:
|
|
UPDATE history
|
|
SET last_read = 0
|
|
WHERE _id = :historyId;
|
|
|
|
resetHistoryByMangaId:
|
|
UPDATE history
|
|
SET last_read = 0
|
|
WHERE _id IN (
|
|
SELECT H._id
|
|
FROM mangas M
|
|
INNER JOIN chapters C
|
|
ON M._id = C.manga_id
|
|
INNER JOIN history H
|
|
ON C._id = H.chapter_id
|
|
WHERE M._id = :mangaId
|
|
);
|
|
|
|
removeAllHistory:
|
|
DELETE FROM history;
|
|
|
|
removeResettedHistory:
|
|
DELETE FROM history
|
|
WHERE last_read = 0;
|
|
|
|
upsert:
|
|
INSERT INTO history(chapter_id, last_read, time_read)
|
|
VALUES (:chapterId, :readAt, :time_read)
|
|
ON CONFLICT(chapter_id)
|
|
DO UPDATE
|
|
SET
|
|
last_read = :readAt,
|
|
time_read = time_read + :time_read
|
|
WHERE chapter_id = :chapterId; |