From 42c7669bca6d73cebd5fd7655218abbda6f78321 Mon Sep 17 00:00:00 2001 From: Rani Sargees Date: Tue, 21 Apr 2020 16:52:30 -0400 Subject: [PATCH] database changes for mergedsources --- .../tachiyomi/data/database/DbOpenCallback.kt | 8 ++++++ .../data/database/queries/ChapterQueries.kt | 7 ++++++ .../data/database/queries/MangaQueries.kt | 7 ++++++ .../data/database/queries/RawQueries.kt | 25 +++++++++++++++++++ .../data/database/tables/MergedTable.kt | 19 ++++++++++++++ 5 files changed, 66 insertions(+) create mode 100755 app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MergedTable.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/DbOpenCallback.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/DbOpenCallback.kt index f7dd90dfc..5f1762d98 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/DbOpenCallback.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/DbOpenCallback.kt @@ -7,6 +7,8 @@ import eu.kanade.tachiyomi.data.database.tables.ChapterTable import eu.kanade.tachiyomi.data.database.tables.HistoryTable import eu.kanade.tachiyomi.data.database.tables.MangaCategoryTable import eu.kanade.tachiyomi.data.database.tables.MangaTable +import eu.kanade.tachiyomi.data.database.tables.MergedTable +import eu.kanade.tachiyomi.data.database.tables.SearchMetadataTable import eu.kanade.tachiyomi.data.database.tables.TrackTable import exh.metadata.sql.tables.SearchMetadataTable import exh.metadata.sql.tables.SearchTagTable @@ -38,6 +40,9 @@ class DbOpenCallback : SupportSQLiteOpenHelper.Callback(DATABASE_VERSION) { execSQL(SearchTagTable.createTableQuery) execSQL(SearchTitleTable.createTableQuery) // EXH <-- + // AZ --> + execSQL(MergedTable.createTableQuery) + // AZ <-- // DB indexes execSQL(MangaTable.createUrlIndexQuery) @@ -53,6 +58,9 @@ class DbOpenCallback : SupportSQLiteOpenHelper.Callback(DATABASE_VERSION) { db.execSQL(SearchTitleTable.createMangaIdIndexQuery) db.execSQL(SearchTitleTable.createTitleIndexQuery) // EXH <-- + // AZ --> + execSQL(MergedTable.createIndexQuery) + // AZ <-- } override fun onUpgrade(db: SupportSQLiteDatabase, oldVersion: Int, newVersion: Int) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt index b6a47ea04..3e114826c 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/ChapterQueries.kt @@ -26,6 +26,13 @@ interface ChapterQueries : DbProvider { .build()) .prepare() + fun getChaptersByMergedMangaId(mangaId: Long) = db.get() + .listOfObjects(Chapter::class.java) + .withQuery(RawQuery.builder() + .query(getMergedChaptersQuery(mangaId)) + .build()) + .prepare() + fun getRecentChapters(date: Date) = db.get() .listOfObjects(MangaChapter::class.java) .withQuery( diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt index 88031499f..6dc741fcf 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/MangaQueries.kt @@ -74,6 +74,13 @@ interface MangaQueries : DbProvider { ) .prepare() + fun getMergedMangas(id: Long) = db.get() + .listOfObjects(Manga::class.java) + .withQuery(RawQuery.builder() + .query(getMergedMangaQuery(id)) + .build()) + .prepare() + fun insertManga(manga: Manga) = db.put().`object`(manga).prepare() fun insertMangas(mangas: List) = db.put().objects(mangas).prepare() diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt index b24c9beb0..c84c95bdc 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/queries/RawQueries.kt @@ -5,6 +5,31 @@ import eu.kanade.tachiyomi.data.database.tables.ChapterTable as Chapter import eu.kanade.tachiyomi.data.database.tables.HistoryTable as History import eu.kanade.tachiyomi.data.database.tables.MangaCategoryTable as MangaCategory import eu.kanade.tachiyomi.data.database.tables.MangaTable as Manga +import eu.kanade.tachiyomi.data.database.tables.MergedTable as Merged + +/** + * Query to get the manga merged into a merged manga + */ +fun getMergedMangaQuery(id: Long) = """ + SELECT ${Manga.TABLE}.* + FROM ( + SELECT ${Merged.COL_MANGA_ID} FROM ${Merged.TABLE} WHERE $(Merged.COL_MERGE_ID} = $id + ) AS M + JOIN ${Manga.TABLE} + ON ${Manga.TABLE}.${Manga.COL_ID} = M.${Merged.COL_MANGA_ID} +""" + +/** + * Query to get the chapters of all manga in a merged manga + */ +fun getMergedChaptersQuery(id: Long) = """ + SELECT ${Chapter.TABLE}.* + FROM ( + SELECT ${Merged.COL_MANGA_ID} FROM ${Merged.TABLE} WHERE $(Merged.COL_MERGE_ID} = $id + ) AS M + JOIN ${Chapter.TABLE} + ON ${Chapter.TABLE}.${Chapter.COL_MANGA_ID} = M.${Merged.COL_MANGA_ID} +""" /** * Query to get the manga from the library, with their categories and unread count. diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MergedTable.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MergedTable.kt new file mode 100755 index 000000000..3bb7297ab --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/tables/MergedTable.kt @@ -0,0 +1,19 @@ +package eu.kanade.tachiyomi.data.database.tables + +object MergedTable { + + const val TABLE = "merged" + + const val COL_MERGE_ID = "mergeID" + + const val COL_MANGA_ID = "mangaID" + + val createTableQuery: String + get() = """CREATE TABLE $TABLE( + $COL_MERGE_ID INTEGER NOT NULL, + $COL_MANGA_ID INTEGER NOT NULL + )""" + + val createIndexQuery: String + get() = "CREATE INDEX ${TABLE}_${COL_MERGE_ID}_index ON $TABLE($COL_MERGE_ID)" +}