fd5da2de3a
* Use SQLDelight in Backup/Restore * Use CoroutineWorker
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; |