From ccdaeada299eb008736daf43f75182fe0f0f0a72 Mon Sep 17 00:00:00 2001 From: Quang Kieu Date: Thu, 27 Apr 2023 22:27:12 -0400 Subject: [PATCH] Add interval data layer (#9398) * Update Manga classes for fetch interval data * Update per review bump version --------- Co-authored-by: quangkieu (cherry picked from commit 41c89eb61dc73f48a0f2bfcef1f509a60d2b56dd) # Conflicts: # app/build.gradle.kts # data/src/main/java/tachiyomi/data/manga/MangaMapper.kt # data/src/main/sqldelight/tachiyomi/data/mangas.sq # data/src/main/sqldelight/tachiyomi/migrations/24.sqm --- .../eu/kanade/tachiyomi/data/backup/BackupManager.kt | 3 +++ .../src/main/java/tachiyomi/data/manga/MangaMapper.kt | 11 +++++++---- .../java/tachiyomi/data/manga/MangaRepositoryImpl.kt | 5 ++++- data/src/main/sqldelight/tachiyomi/data/mangas.sq | 11 +++++++---- data/src/main/sqldelight/tachiyomi/migrations/25.sqm | 1 + .../main/java/tachiyomi/domain/manga/model/Manga.kt | 4 ++++ .../java/tachiyomi/domain/manga/model/MangaUpdate.kt | 4 ++++ 7 files changed, 30 insertions(+), 9 deletions(-) create mode 100644 data/src/main/sqldelight/tachiyomi/migrations/25.sqm diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt index f5ef308ef..88a17831f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt @@ -569,6 +569,7 @@ class BackupManager( favorite = manga.favorite, lastUpdate = manga.lastUpdate, nextUpdate = 0L, + calculateInterval = 0L, initialized = manga.initialized, viewerFlags = manga.viewerFlags, chapterFlags = manga.chapterFlags, @@ -597,6 +598,8 @@ class BackupManager( thumbnailUrl = manga.thumbnailUrl, favorite = manga.favorite.toLong(), lastUpdate = manga.lastUpdate, + nextUpdate = null, + calculateInterval = null, initialized = manga.initialized.toLong(), viewer = manga.viewerFlags, chapterFlags = manga.chapterFlags, diff --git a/data/src/main/java/tachiyomi/data/manga/MangaMapper.kt b/data/src/main/java/tachiyomi/data/manga/MangaMapper.kt index 00dd980f9..9df8010ce 100644 --- a/data/src/main/java/tachiyomi/data/manga/MangaMapper.kt +++ b/data/src/main/java/tachiyomi/data/manga/MangaMapper.kt @@ -5,13 +5,15 @@ import tachiyomi.domain.library.model.LibraryManga import tachiyomi.domain.manga.model.Manga import tachiyomi.view.LibraryView -val mangaMapper: (Long, Long, String, String?, String?, String?, List?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, List?, UpdateStrategy) -> Manga = - { id, source, url, artist, author, description, genre, title, status, thumbnailUrl, favorite, lastUpdate, _, initialized, viewerFlags, chapterFlags, coverLastModified, dateAdded, filteredScanlators, updateStrategy -> +val mangaMapper: (Long, Long, String, String?, String?, String?, List?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, List?, UpdateStrategy, Long) -> Manga = + { id, source, url, artist, author, description, genre, title, status, thumbnailUrl, favorite, lastUpdate, _, initialized, viewerFlags, chapterFlags, coverLastModified, dateAdded, filteredScanlators, updateStrategy, calculateInterval -> Manga( id = id, source = source, favorite = favorite, lastUpdate = lastUpdate ?: 0, + nextUpdate = nextUpdate ?: 0, + calculateInterval = calculateInterval.toInt(), dateAdded = dateAdded, viewerFlags = viewerFlags, chapterFlags = chapterFlags, @@ -34,8 +36,8 @@ val mangaMapper: (Long, Long, String, String?, String?, String?, List?, ) } -val libraryManga: (Long, Long, String, String?, String?, String?, List?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, List?, UpdateStrategy, Long, Long, Long, Long, Long, Long, Long) -> LibraryManga = - { id, source, url, artist, author, description, genre, title, status, thumbnailUrl, favorite, lastUpdate, nextUpdate, initialized, viewerFlags, chapterFlags, coverLastModified, dateAdded, filteredScanlators, updateStrategy, totalCount, readCount, latestUpload, chapterFetchedAt, lastRead, bookmarkCount, category -> +val libraryManga: (Long, Long, String, String?, String?, String?, List?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, List?, UpdateStrategy, Long, Long, Long, Long, Long, Long, Long, Long) -> LibraryManga = + { id, source, url, artist, author, description, genre, title, status, thumbnailUrl, favorite, lastUpdate, nextUpdate, initialized, viewerFlags, chapterFlags, coverLastModified, dateAdded, filteredScanlators, updateStrategy, calculateInterval, totalCount, readCount, latestUpload, chapterFetchedAt, lastRead, bookmarkCount, category -> LibraryManga( manga = mangaMapper( id, @@ -51,6 +53,7 @@ val libraryManga: (Long, Long, String, String?, String?, String?, List?, favorite, lastUpdate, nextUpdate, + calculateInterval, initialized, viewerFlags, chapterFlags, diff --git a/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt b/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt index 67a98a21e..b21502335 100644 --- a/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt +++ b/data/src/main/java/tachiyomi/data/manga/MangaRepositoryImpl.kt @@ -99,7 +99,8 @@ class MangaRepositoryImpl( thumbnailUrl = manga.thumbnailUrl, favorite = manga.favorite, lastUpdate = manga.lastUpdate, - nextUpdate = null, + nextUpdate = manga.nextUpdate, + calculateInterval = manga.calculateInterval.toLong(), initialized = manga.initialized, viewerFlags = manga.viewerFlags, chapterFlags = manga.chapterFlags, @@ -149,6 +150,8 @@ class MangaRepositoryImpl( thumbnailUrl = value.thumbnailUrl, favorite = value.favorite?.toLong(), lastUpdate = value.lastUpdate, + nextUpdate = value.nextUpdate, + calculateInterval = value.calculateInterval?.toLong(), initialized = value.initialized?.toLong(), viewer = value.viewerFlags, chapterFlags = value.chapterFlags, diff --git a/data/src/main/sqldelight/tachiyomi/data/mangas.sq b/data/src/main/sqldelight/tachiyomi/data/mangas.sq index e78e5b1da..e8f0d4052 100644 --- a/data/src/main/sqldelight/tachiyomi/data/mangas.sq +++ b/data/src/main/sqldelight/tachiyomi/data/mangas.sq @@ -22,7 +22,8 @@ CREATE TABLE mangas( cover_last_modified INTEGER AS Long NOT NULL, date_added INTEGER AS Long NOT NULL, filtered_scanlators TEXT AS List, - update_strategy INTEGER AS UpdateStrategy NOT NULL DEFAULT 0 + update_strategy INTEGER AS UpdateStrategy NOT NULL DEFAULT 0, + calculate_interval INTEGER DEFAULT 0 NOT NULL ); CREATE INDEX library_favorite_index ON mangas(favorite) WHERE favorite = 1; @@ -98,8 +99,8 @@ WHERE favorite = 0 AND source IN :sourceIdsAND AND _id NOT IN ( ); insert: -INSERT INTO mangas(source,url,artist,author,description,genre,title,status,thumbnail_url,favorite,last_update,next_update,initialized,viewer,chapter_flags,cover_last_modified,date_added,filtered_scanlators,update_strategy) -VALUES (:source,:url,:artist,:author,:description,:genre,:title,:status,:thumbnailUrl,:favorite,:lastUpdate,:nextUpdate,:initialized,:viewerFlags,:chapterFlags,:coverLastModified,:dateAdded,:filteredScanlators,:updateStrategy); +INSERT INTO mangas(source,url,artist,author,description,genre,title,status,thumbnail_url,favorite,last_update,next_update,initialized,viewer,chapter_flags,cover_last_modified,date_added,filtered_scanlators,update_strategy,calculate_interval) +VALUES (:source,:url,:artist,:author,:description,:genre,:title,:status,:thumbnailUrl,:favorite,:lastUpdate,:nextUpdate,:initialized,:viewerFlags,:chapterFlags,:coverLastModified,:dateAdded,:filteredScanlators,:updateStrategy,:calculateInterval); update: UPDATE mangas SET @@ -114,13 +115,15 @@ UPDATE mangas SET thumbnail_url = coalesce(:thumbnailUrl, thumbnail_url), favorite = coalesce(:favorite, favorite), last_update = coalesce(:lastUpdate, last_update), + next_update = coalesce(:nextUpdate, next_update), initialized = coalesce(:initialized, initialized), viewer = coalesce(:viewer, viewer), chapter_flags = coalesce(:chapterFlags, chapter_flags), cover_last_modified = coalesce(:coverLastModified, cover_last_modified), date_added = coalesce(:dateAdded, date_added), filtered_scanlators = coalesce(:filteredScanlators, filtered_scanlators), - update_strategy = coalesce(:updateStrategy, update_strategy) + update_strategy = coalesce(:updateStrategy, update_strategy), + calculate_interval = coalesce(:calculateInterval, calculate_interval), WHERE _id = :mangaId; selectLastInsertedRowId: diff --git a/data/src/main/sqldelight/tachiyomi/migrations/25.sqm b/data/src/main/sqldelight/tachiyomi/migrations/25.sqm new file mode 100644 index 000000000..ef2370b25 --- /dev/null +++ b/data/src/main/sqldelight/tachiyomi/migrations/25.sqm @@ -0,0 +1 @@ +ALTER TABLE mangas ADD COLUMN calculate_interval INTEGER DEFAULT 0 NOT NULL; \ No newline at end of file diff --git a/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt b/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt index 74122ffbb..a95dbff8b 100644 --- a/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt +++ b/domain/src/main/java/tachiyomi/domain/manga/model/Manga.kt @@ -10,6 +10,8 @@ data class Manga( val source: Long, val favorite: Boolean, val lastUpdate: Long, + val nextUpdate: Long, + val calculateInterval: Int, val dateAdded: Long, val viewerFlags: Long, val chapterFlags: Long, @@ -128,6 +130,8 @@ data class Manga( source = -1L, favorite = false, lastUpdate = 0L, + nextUpdate = 0L, + calculateInterval = 0, dateAdded = 0L, viewerFlags = 0L, chapterFlags = 0L, diff --git a/domain/src/main/java/tachiyomi/domain/manga/model/MangaUpdate.kt b/domain/src/main/java/tachiyomi/domain/manga/model/MangaUpdate.kt index 461bb5617..8b6262025 100644 --- a/domain/src/main/java/tachiyomi/domain/manga/model/MangaUpdate.kt +++ b/domain/src/main/java/tachiyomi/domain/manga/model/MangaUpdate.kt @@ -7,6 +7,8 @@ data class MangaUpdate( val source: Long? = null, val favorite: Boolean? = null, val lastUpdate: Long? = null, + val nextUpdate: Long? = null, + val calculateInterval: Int? = null, val dateAdded: Long? = null, val viewerFlags: Long? = null, val chapterFlags: Long? = null, @@ -32,6 +34,8 @@ fun Manga.toMangaUpdate(): MangaUpdate { source = source, favorite = favorite, lastUpdate = lastUpdate, + nextUpdate = nextUpdate, + calculateInterval = calculateInterval, dateAdded = dateAdded, viewerFlags = viewerFlags, chapterFlags = chapterFlags,