mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
fix: Fix Komga unread count (again)
This commit is contained in:
parent
723abbe520
commit
30d7b389a5
3 changed files with 52 additions and 2 deletions
50
data/src/commonMain/sqldelight/tachiyomi/migrations/27.sqm
Normal file
50
data/src/commonMain/sqldelight/tachiyomi/migrations/27.sqm
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
DROP VIEW IF EXISTS scanlators_view;
|
||||||
|
CREATE VIEW scanlators_view AS
|
||||||
|
SELECT S.* FROM (
|
||||||
|
WITH RECURSIVE split(seq, _id, name, str) AS (
|
||||||
|
SELECT 0, mangas._id, NULL, mangas.filtered_scanlators||' [.] ' FROM mangas WHERE mangas._id
|
||||||
|
UNION ALL SELECT
|
||||||
|
seq+1,
|
||||||
|
_id,
|
||||||
|
substr(str, 0, instr(str, ' [.] ')),
|
||||||
|
substr(str, instr(str, ' [.] ')+5)
|
||||||
|
FROM split WHERE str != ''
|
||||||
|
)
|
||||||
|
SELECT _id AS manga_id, name FROM split WHERE name != '' ORDER BY split.seq ASC
|
||||||
|
) AS S;
|
||||||
|
|
||||||
|
DROP VIEW IF EXISTS library_view;
|
||||||
|
CREATE VIEW library_view AS
|
||||||
|
SELECT
|
||||||
|
M.*,
|
||||||
|
coalesce(C.total, 0) AS total,
|
||||||
|
coalesce(C.read_count, 0) AS has_read,
|
||||||
|
coalesce(C.bookmark_count, 0) AS bookmark_count,
|
||||||
|
coalesce(MC.category_id, 0) AS category,
|
||||||
|
coalesce(C.latestUpload, 0) AS latestUpload,
|
||||||
|
coalesce(C.lastRead, 0) AS lastRead,
|
||||||
|
coalesce(C.lastFetch, 0) AS lastFetch
|
||||||
|
FROM mangas AS M
|
||||||
|
LEFT JOIN (
|
||||||
|
SELECT
|
||||||
|
chapters.manga_id,
|
||||||
|
count(*) AS total,
|
||||||
|
sum(read) AS read_count,
|
||||||
|
sum(bookmark) AS bookmark_count,
|
||||||
|
coalesce(max(chapters.date_upload), 0) AS latestUpload,
|
||||||
|
coalesce(max(history.history_last_read), 0) AS lastRead,
|
||||||
|
coalesce(max(chapters.date_fetch), 0) AS lastFetch
|
||||||
|
FROM chapters
|
||||||
|
LEFT JOIN scanlators_view AS filtered_scanlators
|
||||||
|
ON chapters.manga_id = filtered_scanlators.manga_id
|
||||||
|
AND chapters.scanlator = filtered_scanlators.name
|
||||||
|
LEFT JOIN history
|
||||||
|
ON chapters._id = history.history_chapter_id
|
||||||
|
WHERE filtered_scanlators.name IS NULL
|
||||||
|
GROUP BY chapters.manga_id
|
||||||
|
) AS C
|
||||||
|
ON M._id = C.manga_id
|
||||||
|
LEFT JOIN (SELECT * FROM mangas_categories) AS MC
|
||||||
|
ON MC.manga_id = M._id
|
||||||
|
WHERE M.favorite = 1
|
||||||
|
ORDER BY M.title;
|
|
@ -21,7 +21,7 @@ LEFT JOIN (
|
||||||
FROM chapters
|
FROM chapters
|
||||||
LEFT JOIN scanlators_view AS filtered_scanlators
|
LEFT JOIN scanlators_view AS filtered_scanlators
|
||||||
ON chapters.manga_id = filtered_scanlators.manga_id
|
ON chapters.manga_id = filtered_scanlators.manga_id
|
||||||
AND ifnull(chapters.scanlator, 'N/A') = ifnull(filtered_scanlators.name, '/<INVALID>/') -- I assume if it's N/A it shouldn't be filtered
|
AND chapters.scanlator = filtered_scanlators.name
|
||||||
LEFT JOIN history
|
LEFT JOIN history
|
||||||
ON chapters._id = history.history_chapter_id
|
ON chapters._id = history.history_chapter_id
|
||||||
WHERE filtered_scanlators.name IS NULL
|
WHERE filtered_scanlators.name IS NULL
|
||||||
|
|
|
@ -10,5 +10,5 @@ SELECT S.* FROM (
|
||||||
substr(str, instr(str, ' [.] ')+5)
|
substr(str, instr(str, ' [.] ')+5)
|
||||||
FROM split WHERE str != ''
|
FROM split WHERE str != ''
|
||||||
)
|
)
|
||||||
SELECT _id AS manga_id, name FROM split WHERE split.seq != 0 ORDER BY split.seq ASC
|
SELECT _id AS manga_id, name FROM split WHERE name != '' ORDER BY split.seq ASC
|
||||||
) AS S;
|
) AS S;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue