Move SQLDelight to data module (#8954)
And use tachiyomi instead of eu.kanade.tachiyomi for package names in the module (cherry picked from commit 823749fc1ed16dbf52d43839888a70de089d65b1) # Conflicts: # app/build.gradle.kts # app/src/main/java/eu/kanade/data/history/HistoryRepositoryImpl.kt # app/src/main/java/eu/kanade/data/manga/MangaRepositoryImpl.kt # app/src/main/java/eu/kanade/data/updates/UpdatesRepositoryImpl.kt # app/src/main/java/eu/kanade/tachiyomi/App.kt # app/src/main/java/eu/kanade/tachiyomi/AppModule.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/BackupManager.kt # app/src/main/java/eu/kanade/tachiyomi/source/model/SMangaExtensions.kt # data/src/main/java/tachiyomi/data/AndroidDatabaseHandler.kt # data/src/main/sqldelight/tachiyomi/data/eh.sq # data/src/main/sqldelight/tachiyomi/data/eh_favorites.sq # data/src/main/sqldelight/tachiyomi/data/feed_saved_search.sq # data/src/main/sqldelight/tachiyomi/data/merged.sq # data/src/main/sqldelight/tachiyomi/data/saved_search.sq # data/src/main/sqldelight/tachiyomi/data/search_metadata.sq # data/src/main/sqldelight/tachiyomi/data/search_tags.sq # data/src/main/sqldelight/tachiyomi/data/search_titles.sq # data/src/main/sqldelight/tachiyomi/migrations/16.sqm # data/src/main/sqldelight/tachiyomi/migrations/24.sqm
This commit is contained in:
parent
888d1f0983
commit
64d829d304
@ -8,7 +8,6 @@ plugins {
|
|||||||
kotlin("plugin.parcelize")
|
kotlin("plugin.parcelize")
|
||||||
kotlin("plugin.serialization")
|
kotlin("plugin.serialization")
|
||||||
id("com.github.zellius.shortcut-helper")
|
id("com.github.zellius.shortcut-helper")
|
||||||
id("com.squareup.sqldelight")
|
|
||||||
id("com.github.ben-manes.versions")
|
id("com.github.ben-manes.versions")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,19 +133,13 @@ android {
|
|||||||
composeOptions {
|
composeOptions {
|
||||||
kotlinCompilerExtensionVersion = compose.versions.compiler.get()
|
kotlinCompilerExtensionVersion = compose.versions.compiler.get()
|
||||||
}
|
}
|
||||||
|
|
||||||
sqldelight {
|
|
||||||
database("Database") {
|
|
||||||
packageName = "eu.kanade.tachiyomi"
|
|
||||||
dialect = "sqlite:3.24"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(project(":i18n"))
|
implementation(project(":i18n"))
|
||||||
implementation(project(":core"))
|
implementation(project(":core"))
|
||||||
implementation(project(":source-api"))
|
implementation(project(":source-api"))
|
||||||
|
implementation(project(":data"))
|
||||||
|
|
||||||
// Compose
|
// Compose
|
||||||
implementation(platform(compose.bom))
|
implementation(platform(compose.bom))
|
||||||
@ -169,9 +162,6 @@ dependencies {
|
|||||||
implementation(androidx.paging.compose)
|
implementation(androidx.paging.compose)
|
||||||
|
|
||||||
implementation(libs.bundles.sqlite)
|
implementation(libs.bundles.sqlite)
|
||||||
implementation(libs.sqldelight.android.driver)
|
|
||||||
implementation(libs.sqldelight.coroutines)
|
|
||||||
implementation(libs.sqldelight.android.paging)
|
|
||||||
|
|
||||||
implementation(kotlinx.reflect)
|
implementation(kotlinx.reflect)
|
||||||
|
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package eu.kanade.data.category
|
package eu.kanade.data.category
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.category.model.Category
|
import eu.kanade.domain.category.model.Category
|
||||||
import eu.kanade.domain.category.model.CategoryUpdate
|
import eu.kanade.domain.category.model.CategoryUpdate
|
||||||
import eu.kanade.domain.category.repository.CategoryRepository
|
import eu.kanade.domain.category.repository.CategoryRepository
|
||||||
import eu.kanade.tachiyomi.Database
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import tachiyomi.data.Database
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class CategoryRepositoryImpl(
|
class CategoryRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package eu.kanade.data.chapter
|
package eu.kanade.data.chapter
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.chapter.model.Chapter
|
import eu.kanade.domain.chapter.model.Chapter
|
||||||
import eu.kanade.domain.chapter.model.ChapterUpdate
|
import eu.kanade.domain.chapter.model.ChapterUpdate
|
||||||
import eu.kanade.domain.chapter.repository.ChapterRepository
|
import eu.kanade.domain.chapter.repository.ChapterRepository
|
||||||
@ -8,6 +7,7 @@ import eu.kanade.tachiyomi.util.system.logcat
|
|||||||
import eu.kanade.tachiyomi.util.system.toLong
|
import eu.kanade.tachiyomi.util.system.toLong
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import logcat.LogPriority
|
import logcat.LogPriority
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class ChapterRepositoryImpl(
|
class ChapterRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package eu.kanade.data.history
|
package eu.kanade.data.history
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.history.model.History
|
import eu.kanade.domain.history.model.History
|
||||||
import eu.kanade.domain.history.model.HistoryUpdate
|
import eu.kanade.domain.history.model.HistoryUpdate
|
||||||
import eu.kanade.domain.history.model.HistoryWithRelations
|
import eu.kanade.domain.history.model.HistoryWithRelations
|
||||||
@ -8,6 +7,7 @@ import eu.kanade.domain.history.repository.HistoryRepository
|
|||||||
import eu.kanade.tachiyomi.util.system.logcat
|
import eu.kanade.tachiyomi.util.system.logcat
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import logcat.LogPriority
|
import logcat.LogPriority
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class HistoryRepositoryImpl(
|
class HistoryRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package eu.kanade.data.manga
|
package eu.kanade.data.manga
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.exh.favoriteEntryMapper
|
import eu.kanade.data.exh.favoriteEntryMapper
|
||||||
import eu.kanade.domain.manga.repository.FavoritesEntryRepository
|
import eu.kanade.domain.manga.repository.FavoritesEntryRepository
|
||||||
import exh.favorites.sql.models.FavoriteEntry
|
import exh.favorites.sql.models.FavoriteEntry
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class FavoritesEntryRepositoryImpl(
|
class FavoritesEntryRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -3,6 +3,7 @@ package eu.kanade.data.manga
|
|||||||
import eu.kanade.domain.library.model.LibraryManga
|
import eu.kanade.domain.library.model.LibraryManga
|
||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.source.model.UpdateStrategy
|
import eu.kanade.tachiyomi.source.model.UpdateStrategy
|
||||||
|
import tachiyomi.view.LibraryView
|
||||||
|
|
||||||
val mangaMapper: (Long, Long, String, String?, String?, String?, List<String>?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, List<String>?, UpdateStrategy) -> Manga =
|
val mangaMapper: (Long, Long, String, String?, String?, String?, List<String>?, String, Long, String?, Boolean, Long?, Long?, Boolean, Long, Long, Long, Long, List<String>?, UpdateStrategy) -> Manga =
|
||||||
{ id, source, url, artist, author, description, genre, title, status, thumbnailUrl, favorite, lastUpdate, _, initialized, viewerFlags, chapterFlags, coverLastModified, dateAdded, filteredScanlators, updateStrategy ->
|
{ id, source, url, artist, author, description, genre, title, status, thumbnailUrl, favorite, lastUpdate, _, initialized, viewerFlags, chapterFlags, coverLastModified, dateAdded, filteredScanlators, updateStrategy ->
|
||||||
@ -69,3 +70,36 @@ val libraryManga: (Long, Long, String, String?, String?, String?, List<String>?,
|
|||||||
lastRead = lastRead,
|
lastRead = lastRead,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val libraryViewMapper: (LibraryView) -> LibraryManga = {
|
||||||
|
LibraryManga(
|
||||||
|
Manga(
|
||||||
|
id = it._id,
|
||||||
|
source = it.source,
|
||||||
|
favorite = it.favorite,
|
||||||
|
lastUpdate = it.last_update ?: 0,
|
||||||
|
dateAdded = it.date_added,
|
||||||
|
viewerFlags = it.viewer,
|
||||||
|
chapterFlags = it.chapter_flags,
|
||||||
|
coverLastModified = it.cover_last_modified,
|
||||||
|
url = it.url,
|
||||||
|
ogTitle = it.title,
|
||||||
|
ogArtist = it.artist,
|
||||||
|
ogAuthor = it.author,
|
||||||
|
ogDescription = it.description,
|
||||||
|
ogGenre = it.genre,
|
||||||
|
ogStatus = it.status,
|
||||||
|
thumbnailUrl = it.thumbnail_url,
|
||||||
|
updateStrategy = it.update_strategy,
|
||||||
|
initialized = it.initialized,
|
||||||
|
filteredScanlators = it.filtered_scanlators,
|
||||||
|
),
|
||||||
|
it.category,
|
||||||
|
it.totalCount,
|
||||||
|
it.readCount,
|
||||||
|
it.bookmarkCount,
|
||||||
|
it.latestUpload,
|
||||||
|
it.chapterFetchedAt,
|
||||||
|
it.lastRead,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package eu.kanade.data.manga
|
package eu.kanade.data.manga
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.exh.mergedMangaReferenceMapper
|
import eu.kanade.data.exh.mergedMangaReferenceMapper
|
||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.domain.manga.model.MergeMangaSettingsUpdate
|
import eu.kanade.domain.manga.model.MergeMangaSettingsUpdate
|
||||||
@ -10,6 +9,7 @@ import eu.kanade.tachiyomi.util.system.toLong
|
|||||||
import exh.merged.sql.models.MergedMangaReference
|
import exh.merged.sql.models.MergedMangaReference
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import logcat.LogPriority
|
import logcat.LogPriority
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class MangaMergeRepositoryImpl(
|
class MangaMergeRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package eu.kanade.data.manga
|
package eu.kanade.data.manga
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.exh.searchMetadataMapper
|
import eu.kanade.data.exh.searchMetadataMapper
|
||||||
import eu.kanade.data.exh.searchTagMapper
|
import eu.kanade.data.exh.searchTagMapper
|
||||||
import eu.kanade.data.exh.searchTitleMapper
|
import eu.kanade.data.exh.searchTitleMapper
|
||||||
@ -13,6 +12,7 @@ import exh.metadata.sql.models.SearchTitle
|
|||||||
import exh.source.EH_SOURCE_ID
|
import exh.source.EH_SOURCE_ID
|
||||||
import exh.source.EXH_SOURCE_ID
|
import exh.source.EXH_SOURCE_ID
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class MangaMetadataRepositoryImpl(
|
class MangaMetadataRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -1,10 +1,5 @@
|
|||||||
package eu.kanade.data.manga
|
package eu.kanade.data.manga
|
||||||
|
|
||||||
import eu.kanade.data.AndroidDatabaseHandler
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.listOfStringsAdapter
|
|
||||||
import eu.kanade.data.listOfStringsAndAdapter
|
|
||||||
import eu.kanade.data.updateStrategyAdapter
|
|
||||||
import eu.kanade.domain.library.model.LibraryManga
|
import eu.kanade.domain.library.model.LibraryManga
|
||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.domain.manga.model.MangaUpdate
|
import eu.kanade.domain.manga.model.MangaUpdate
|
||||||
@ -14,6 +9,11 @@ import eu.kanade.tachiyomi.util.system.toLong
|
|||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
import logcat.LogPriority
|
import logcat.LogPriority
|
||||||
|
import tachiyomi.data.AndroidDatabaseHandler
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
import tachiyomi.data.listOfStringsAdapter
|
||||||
|
import tachiyomi.data.listOfStringsAndAdapter
|
||||||
|
import tachiyomi.data.updateStrategyAdapter
|
||||||
|
|
||||||
class MangaRepositoryImpl(
|
class MangaRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
@ -40,7 +40,7 @@ class MangaRepositoryImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun getLibraryManga(): List<LibraryManga> {
|
override suspend fun getLibraryManga(): List<LibraryManga> {
|
||||||
return handler.awaitList { (handler as AndroidDatabaseHandler).getLibraryQuery() }
|
return handler.awaitList { (handler as AndroidDatabaseHandler).getLibraryQuery() }.map(libraryViewMapper)
|
||||||
// return handler.awaitList { libraryViewQueries.library(libraryManga) }
|
// return handler.awaitList { libraryViewQueries.library(libraryManga) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package eu.kanade.data.source
|
package eu.kanade.data.source
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.exh.feedSavedSearchMapper
|
import eu.kanade.data.exh.feedSavedSearchMapper
|
||||||
import eu.kanade.data.exh.savedSearchMapper
|
import eu.kanade.data.exh.savedSearchMapper
|
||||||
import eu.kanade.domain.source.repository.FeedSavedSearchRepository
|
import eu.kanade.domain.source.repository.FeedSavedSearchRepository
|
||||||
import exh.savedsearches.models.FeedSavedSearch
|
import exh.savedsearches.models.FeedSavedSearch
|
||||||
import exh.savedsearches.models.SavedSearch
|
import exh.savedsearches.models.SavedSearch
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class FeedSavedSearchRepositoryImpl(
|
class FeedSavedSearchRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package eu.kanade.data.source
|
package eu.kanade.data.source
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.exh.savedSearchMapper
|
import eu.kanade.data.exh.savedSearchMapper
|
||||||
import eu.kanade.domain.source.repository.SavedSearchRepository
|
import eu.kanade.domain.source.repository.SavedSearchRepository
|
||||||
import exh.savedsearches.models.SavedSearch
|
import exh.savedsearches.models.SavedSearch
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class SavedSearchRepositoryImpl(
|
class SavedSearchRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package eu.kanade.data.source
|
package eu.kanade.data.source
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.source.model.SourceData
|
import eu.kanade.domain.source.model.SourceData
|
||||||
import eu.kanade.domain.source.repository.SourceDataRepository
|
import eu.kanade.domain.source.repository.SourceDataRepository
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class SourceDataRepositoryImpl(
|
class SourceDataRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package eu.kanade.data.source
|
package eu.kanade.data.source
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.source.model.Source
|
import eu.kanade.domain.source.model.Source
|
||||||
import eu.kanade.domain.source.model.SourcePagingSourceType
|
import eu.kanade.domain.source.model.SourcePagingSourceType
|
||||||
import eu.kanade.domain.source.model.SourceWithCount
|
import eu.kanade.domain.source.model.SourceWithCount
|
||||||
@ -13,6 +12,7 @@ import eu.kanade.tachiyomi.source.online.all.EHentai
|
|||||||
import exh.source.MERGED_SOURCE_ID
|
import exh.source.MERGED_SOURCE_ID
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class SourceRepositoryImpl(
|
class SourceRepositoryImpl(
|
||||||
private val sourceManager: SourceManager,
|
private val sourceManager: SourceManager,
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package eu.kanade.data.track
|
package eu.kanade.data.track
|
||||||
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.track.model.Track
|
import eu.kanade.domain.track.model.Track
|
||||||
import eu.kanade.domain.track.repository.TrackRepository
|
import eu.kanade.domain.track.repository.TrackRepository
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class TrackRepositoryImpl(
|
class TrackRepositoryImpl(
|
||||||
private val handler: DatabaseHandler,
|
private val handler: DatabaseHandler,
|
||||||
|
@ -2,6 +2,7 @@ package eu.kanade.data.updates
|
|||||||
|
|
||||||
import eu.kanade.domain.manga.model.MangaCover
|
import eu.kanade.domain.manga.model.MangaCover
|
||||||
import eu.kanade.domain.updates.model.UpdatesWithRelations
|
import eu.kanade.domain.updates.model.UpdatesWithRelations
|
||||||
|
import tachiyomi.view.UpdatesView
|
||||||
|
|
||||||
val updateWithRelationMapper: (Long, String, Long, String, String?, Boolean, Boolean, Long, Long, Boolean, String?, Long, Long, Long) -> UpdatesWithRelations = {
|
val updateWithRelationMapper: (Long, String, Long, String, String?, Boolean, Boolean, Long, Long, Boolean, String?, Long, Long, Long) -> UpdatesWithRelations = {
|
||||||
mangaId, mangaTitle, chapterId, chapterName, scanlator, read, bookmark, lastPageRead, sourceId, favorite, thumbnailUrl, coverLastModified, _, dateFetch ->
|
mangaId, mangaTitle, chapterId, chapterName, scanlator, read, bookmark, lastPageRead, sourceId, favorite, thumbnailUrl, coverLastModified, _, dateFetch ->
|
||||||
@ -27,3 +28,25 @@ val updateWithRelationMapper: (Long, String, Long, String, String?, Boolean, Boo
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val updatesViewMapper: (UpdatesView) -> UpdatesWithRelations = {
|
||||||
|
UpdatesWithRelations(
|
||||||
|
mangaId = it.mangaId,
|
||||||
|
ogMangaTitle = it.mangaTitle,
|
||||||
|
chapterId = it.chapterId,
|
||||||
|
chapterName = it.chapterName,
|
||||||
|
scanlator = it.scanlator,
|
||||||
|
read = it.read,
|
||||||
|
bookmark = it.bookmark,
|
||||||
|
lastPageRead = it.last_page_read,
|
||||||
|
sourceId = it.source,
|
||||||
|
dateFetch = it.datefetch,
|
||||||
|
coverData = MangaCover(
|
||||||
|
mangaId = it.mangaId,
|
||||||
|
sourceId = it.source,
|
||||||
|
isMangaFavorite = it.favorite,
|
||||||
|
url = it.thumbnailUrl,
|
||||||
|
lastModified = it.coverLastModified,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package eu.kanade.data.updates
|
package eu.kanade.data.updates
|
||||||
|
|
||||||
import eu.kanade.data.AndroidDatabaseHandler
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.updates.model.UpdatesWithRelations
|
import eu.kanade.domain.updates.model.UpdatesWithRelations
|
||||||
import eu.kanade.domain.updates.repository.UpdatesRepository
|
import eu.kanade.domain.updates.repository.UpdatesRepository
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
|
import tachiyomi.data.AndroidDatabaseHandler
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
|
||||||
class UpdatesRepositoryImpl(
|
class UpdatesRepositoryImpl(
|
||||||
val databaseHandler: DatabaseHandler,
|
val databaseHandler: DatabaseHandler,
|
||||||
@ -16,6 +16,7 @@ class UpdatesRepositoryImpl(
|
|||||||
updatesViewQueries.updates(after, updateWithRelationMapper)
|
updatesViewQueries.updates(after, updateWithRelationMapper)
|
||||||
}.map {
|
}.map {
|
||||||
databaseHandler.awaitList { (databaseHandler as AndroidDatabaseHandler).getUpdatesQuery(after) }
|
databaseHandler.awaitList { (databaseHandler as AndroidDatabaseHandler).getUpdatesQuery(after) }
|
||||||
|
.map(updatesViewMapper)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,6 @@ import eu.kanade.presentation.components.FastScrollLazyColumn
|
|||||||
import eu.kanade.presentation.components.LoadingScreen
|
import eu.kanade.presentation.components.LoadingScreen
|
||||||
import eu.kanade.presentation.components.Scaffold
|
import eu.kanade.presentation.components.Scaffold
|
||||||
import eu.kanade.presentation.util.selectedBackground
|
import eu.kanade.presentation.util.selectedBackground
|
||||||
import eu.kanade.tachiyomi.Database
|
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||||
import eu.kanade.tachiyomi.util.lang.launchUI
|
import eu.kanade.tachiyomi.util.lang.launchUI
|
||||||
@ -58,6 +57,7 @@ import eu.kanade.tachiyomi.util.lang.withNonCancellableContext
|
|||||||
import eu.kanade.tachiyomi.util.system.toast
|
import eu.kanade.tachiyomi.util.system.toast
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
|
import tachiyomi.data.Database
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
|
@ -74,10 +74,6 @@ import eu.kanade.tachiyomi.util.CrashLogUtil
|
|||||||
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
|
import eu.kanade.tachiyomi.util.lang.launchNonCancellable
|
||||||
import eu.kanade.tachiyomi.util.lang.withUIContext
|
import eu.kanade.tachiyomi.util.lang.withUIContext
|
||||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
import eu.kanade.tachiyomi.util.storage.DiskUtil
|
||||||
import eu.kanade.tachiyomi.util.system.DeviceUtil
|
|
||||||
import eu.kanade.tachiyomi.util.system.isPackageInstalled
|
|
||||||
import eu.kanade.tachiyomi.util.system.isPreviewBuildType
|
|
||||||
import eu.kanade.tachiyomi.util.system.isReleaseBuildType
|
|
||||||
import eu.kanade.tachiyomi.util.system.isShizukuInstalled
|
import eu.kanade.tachiyomi.util.system.isShizukuInstalled
|
||||||
import eu.kanade.tachiyomi.util.system.logcat
|
import eu.kanade.tachiyomi.util.system.logcat
|
||||||
import eu.kanade.tachiyomi.util.system.powerManager
|
import eu.kanade.tachiyomi.util.system.powerManager
|
||||||
|
@ -35,7 +35,6 @@ import com.elvishew.xlog.printer.file.clean.FileLastModifiedCleanStrategy
|
|||||||
import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator
|
import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator
|
||||||
import com.google.firebase.analytics.ktx.analytics
|
import com.google.firebase.analytics.ktx.analytics
|
||||||
import com.google.firebase.ktx.Firebase
|
import com.google.firebase.ktx.Firebase
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.DomainModule
|
import eu.kanade.domain.DomainModule
|
||||||
import eu.kanade.domain.SYDomainModule
|
import eu.kanade.domain.SYDomainModule
|
||||||
import eu.kanade.domain.base.BasePreferences
|
import eu.kanade.domain.base.BasePreferences
|
||||||
@ -74,6 +73,7 @@ import kotlinx.coroutines.flow.onEach
|
|||||||
import logcat.LogPriority
|
import logcat.LogPriority
|
||||||
import logcat.LogcatLogger
|
import logcat.LogcatLogger
|
||||||
import org.conscrypt.Conscrypt
|
import org.conscrypt.Conscrypt
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
@ -7,16 +7,6 @@ import androidx.sqlite.db.SupportSQLiteDatabase
|
|||||||
import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
|
import androidx.sqlite.db.framework.FrameworkSQLiteOpenHelperFactory
|
||||||
import com.squareup.sqldelight.android.AndroidSqliteDriver
|
import com.squareup.sqldelight.android.AndroidSqliteDriver
|
||||||
import com.squareup.sqldelight.db.SqlDriver
|
import com.squareup.sqldelight.db.SqlDriver
|
||||||
import data.Categories
|
|
||||||
import data.History
|
|
||||||
import data.Mangas
|
|
||||||
import eu.kanade.data.AndroidDatabaseHandler
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.dateAdapter
|
|
||||||
import eu.kanade.data.listOfLongsAdapter
|
|
||||||
import eu.kanade.data.listOfStringsAdapter
|
|
||||||
import eu.kanade.data.listOfStringsAndAdapter
|
|
||||||
import eu.kanade.data.updateStrategyAdapter
|
|
||||||
import eu.kanade.domain.UnsortedPreferences
|
import eu.kanade.domain.UnsortedPreferences
|
||||||
import eu.kanade.domain.backup.service.BackupPreferences
|
import eu.kanade.domain.backup.service.BackupPreferences
|
||||||
import eu.kanade.domain.base.BasePreferences
|
import eu.kanade.domain.base.BasePreferences
|
||||||
@ -55,6 +45,17 @@ import nl.adaptivity.xmlutil.XmlDeclMode
|
|||||||
import nl.adaptivity.xmlutil.core.XmlVersion
|
import nl.adaptivity.xmlutil.core.XmlVersion
|
||||||
import nl.adaptivity.xmlutil.serialization.UnknownChildHandler
|
import nl.adaptivity.xmlutil.serialization.UnknownChildHandler
|
||||||
import nl.adaptivity.xmlutil.serialization.XML
|
import nl.adaptivity.xmlutil.serialization.XML
|
||||||
|
import tachiyomi.data.AndroidDatabaseHandler
|
||||||
|
import tachiyomi.data.Categories
|
||||||
|
import tachiyomi.data.Database
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
import tachiyomi.data.History
|
||||||
|
import tachiyomi.data.Mangas
|
||||||
|
import tachiyomi.data.dateAdapter
|
||||||
|
import tachiyomi.data.listOfLongsAdapter
|
||||||
|
import tachiyomi.data.listOfStringsAdapter
|
||||||
|
import tachiyomi.data.listOfStringsAndAdapter
|
||||||
|
import tachiyomi.data.updateStrategyAdapter
|
||||||
import uy.kohesive.injekt.api.InjektModule
|
import uy.kohesive.injekt.api.InjektModule
|
||||||
import uy.kohesive.injekt.api.InjektRegistrar
|
import uy.kohesive.injekt.api.InjektRegistrar
|
||||||
import uy.kohesive.injekt.api.addSingleton
|
import uy.kohesive.injekt.api.addSingleton
|
||||||
|
@ -4,13 +4,8 @@ import android.Manifest
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import com.hippo.unifile.UniFile
|
import com.hippo.unifile.UniFile
|
||||||
import data.Manga_sync
|
|
||||||
import data.Mangas
|
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.exh.mergedMangaReferenceMapper
|
import eu.kanade.data.exh.mergedMangaReferenceMapper
|
||||||
import eu.kanade.data.listOfStringsAndAdapter
|
|
||||||
import eu.kanade.data.manga.mangaMapper
|
import eu.kanade.data.manga.mangaMapper
|
||||||
import eu.kanade.data.updateStrategyAdapter
|
|
||||||
import eu.kanade.domain.backup.service.BackupPreferences
|
import eu.kanade.domain.backup.service.BackupPreferences
|
||||||
import eu.kanade.domain.category.interactor.GetCategories
|
import eu.kanade.domain.category.interactor.GetCategories
|
||||||
import eu.kanade.domain.category.model.Category
|
import eu.kanade.domain.category.model.Category
|
||||||
@ -65,6 +60,11 @@ import logcat.LogPriority
|
|||||||
import okio.buffer
|
import okio.buffer
|
||||||
import okio.gzip
|
import okio.gzip
|
||||||
import okio.sink
|
import okio.sink
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
import tachiyomi.data.Manga_sync
|
||||||
|
import tachiyomi.data.Mangas
|
||||||
|
import tachiyomi.data.listOfStringsAndAdapter
|
||||||
|
import tachiyomi.data.updateStrategyAdapter
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package eu.kanade.tachiyomi.data.backup.models
|
package eu.kanade.tachiyomi.data.backup.models
|
||||||
|
|
||||||
import eu.kanade.data.listOfStringsAndAdapter
|
|
||||||
import eu.kanade.domain.manga.model.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.ChapterImpl
|
import eu.kanade.tachiyomi.data.database.models.ChapterImpl
|
||||||
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
||||||
@ -10,6 +9,7 @@ import eu.kanade.tachiyomi.source.model.UpdateStrategy
|
|||||||
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
|
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.protobuf.ProtoNumber
|
import kotlinx.serialization.protobuf.ProtoNumber
|
||||||
|
import tachiyomi.data.listOfStringsAndAdapter
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
@Serializable
|
@Serializable
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
package eu.kanade.tachiyomi.data.database.models
|
package eu.kanade.tachiyomi.data.database.models
|
||||||
|
|
||||||
import eu.kanade.data.listOfStringsAndAdapter
|
|
||||||
import eu.kanade.tachiyomi.source.model.SManga
|
import eu.kanade.tachiyomi.source.model.SManga
|
||||||
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
|
import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
|
||||||
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
|
import eu.kanade.tachiyomi.ui.reader.setting.ReadingModeType
|
||||||
import exh.util.nullIfEmpty
|
import exh.util.nullIfEmpty
|
||||||
|
import tachiyomi.data.listOfStringsAndAdapter
|
||||||
import eu.kanade.domain.manga.model.Manga as DomainManga
|
import eu.kanade.domain.manga.model.Manga as DomainManga
|
||||||
|
|
||||||
interface Manga : SManga {
|
interface Manga : SManga {
|
||||||
|
@ -43,7 +43,6 @@ import coil.request.ImageRequest
|
|||||||
import coil.size.Precision
|
import coil.size.Precision
|
||||||
import coil.size.Scale
|
import coil.size.Scale
|
||||||
import coil.transform.RoundedCornersTransformation
|
import coil.transform.RoundedCornersTransformation
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.manga.model.MangaCover
|
import eu.kanade.domain.manga.model.MangaCover
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.core.security.SecurityPreferences
|
import eu.kanade.tachiyomi.core.security.SecurityPreferences
|
||||||
@ -52,10 +51,11 @@ import eu.kanade.tachiyomi.util.Constants
|
|||||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||||
import eu.kanade.tachiyomi.util.system.dpToPx
|
import eu.kanade.tachiyomi.util.system.dpToPx
|
||||||
import kotlinx.coroutines.MainScope
|
import kotlinx.coroutines.MainScope
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
|
import tachiyomi.view.UpdatesView
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import view.UpdatesView
|
|
||||||
import java.util.Calendar
|
import java.util.Calendar
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package eu.kanade.tachiyomi.source.model
|
package eu.kanade.tachiyomi.source.model
|
||||||
|
|
||||||
import data.Chapters
|
import tachiyomi.data.Chapters
|
||||||
|
|
||||||
fun SChapter.copyFrom(other: Chapters) {
|
fun SChapter.copyFrom(other: Chapters) {
|
||||||
name = other.name
|
name = other.name
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package eu.kanade.tachiyomi.source.model
|
package eu.kanade.tachiyomi.source.model
|
||||||
|
|
||||||
import data.Mangas
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||||
|
import tachiyomi.data.Mangas
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ fun SManga.copyFrom(other: Mangas) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (other.genre != null) {
|
if (other.genre != null) {
|
||||||
genre = other.genre.joinToString(separator = ", ")
|
genre = other.genre!!.joinToString(separator = ", ")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (other.thumbnail_url != null) {
|
if (other.thumbnail_url != null) {
|
||||||
|
@ -5,7 +5,6 @@ package exh
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.core.content.edit
|
import androidx.core.content.edit
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.data.category.categoryMapper
|
import eu.kanade.data.category.categoryMapper
|
||||||
import eu.kanade.data.chapter.chapterMapper
|
import eu.kanade.data.chapter.chapterMapper
|
||||||
import eu.kanade.domain.backup.service.BackupPreferences
|
import eu.kanade.domain.backup.service.BackupPreferences
|
||||||
@ -66,6 +65,7 @@ import kotlinx.serialization.json.JsonObject
|
|||||||
import kotlinx.serialization.json.contentOrNull
|
import kotlinx.serialization.json.contentOrNull
|
||||||
import kotlinx.serialization.json.jsonArray
|
import kotlinx.serialization.json.jsonArray
|
||||||
import kotlinx.serialization.json.jsonPrimitive
|
import kotlinx.serialization.json.jsonPrimitive
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
import uy.kohesive.injekt.Injekt
|
import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
@ -2,7 +2,6 @@ package exh.debug
|
|||||||
|
|
||||||
import android.app.Application
|
import android.app.Application
|
||||||
import androidx.work.WorkManager
|
import androidx.work.WorkManager
|
||||||
import eu.kanade.data.DatabaseHandler
|
|
||||||
import eu.kanade.domain.backup.service.BackupPreferences
|
import eu.kanade.domain.backup.service.BackupPreferences
|
||||||
import eu.kanade.domain.base.BasePreferences
|
import eu.kanade.domain.base.BasePreferences
|
||||||
import eu.kanade.domain.library.service.LibraryPreferences
|
import eu.kanade.domain.library.service.LibraryPreferences
|
||||||
@ -32,6 +31,7 @@ import exh.source.nHentaiSourceIds
|
|||||||
import exh.util.jobScheduler
|
import exh.util.jobScheduler
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import kotlinx.serialization.protobuf.schema.ProtoBufSchemaGenerator
|
import kotlinx.serialization.protobuf.schema.ProtoBufSchemaGenerator
|
||||||
|
import tachiyomi.data.DatabaseHandler
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package exh.source
|
package exh.source
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.domain.manga.model.Manga
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.source.SourceManager
|
import eu.kanade.tachiyomi.source.SourceManager
|
||||||
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
import eu.kanade.tachiyomi.source.online.all.MangaDex
|
||||||
@ -9,22 +9,11 @@ import eu.kanade.tachiyomi.source.online.english.EightMuses
|
|||||||
import eu.kanade.tachiyomi.source.online.english.HBrowse
|
import eu.kanade.tachiyomi.source.online.english.HBrowse
|
||||||
import eu.kanade.tachiyomi.source.online.english.Pururin
|
import eu.kanade.tachiyomi.source.online.english.Pururin
|
||||||
import eu.kanade.tachiyomi.source.online.english.Tsumino
|
import eu.kanade.tachiyomi.source.online.english.Tsumino
|
||||||
import eu.kanade.domain.manga.model.Manga as DomainManga
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Source helpers
|
* Source helpers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Lewd source IDs
|
|
||||||
const val LEWD_SOURCE_SERIES = 6900L
|
|
||||||
const val EH_SOURCE_ID = LEWD_SOURCE_SERIES + 1
|
|
||||||
const val EXH_SOURCE_ID = LEWD_SOURCE_SERIES + 2
|
|
||||||
const val PURURIN_SOURCE_ID = 2221515250486218861
|
|
||||||
const val TSUMINO_SOURCE_ID = 6707338697138388238
|
|
||||||
const val EIGHTMUSES_SOURCE_ID = 1802675169972965535
|
|
||||||
const val HBROWSE_SOURCE_ID = 1401584337232758222
|
|
||||||
const val MERGED_SOURCE_ID = LEWD_SOURCE_SERIES + 69
|
|
||||||
|
|
||||||
private val DELEGATED_METADATA_SOURCES by lazy {
|
private val DELEGATED_METADATA_SOURCES by lazy {
|
||||||
listOf(
|
listOf(
|
||||||
Pururin::class,
|
Pururin::class,
|
||||||
@ -87,8 +76,6 @@ fun Source.isMdBasedSource() = id in mangaDexSourceIds
|
|||||||
|
|
||||||
fun Manga.isEhBasedManga() = source == EH_SOURCE_ID || source == EXH_SOURCE_ID
|
fun Manga.isEhBasedManga() = source == EH_SOURCE_ID || source == EXH_SOURCE_ID
|
||||||
|
|
||||||
fun DomainManga.isEhBasedManga() = source == EH_SOURCE_ID || source == EXH_SOURCE_ID
|
|
||||||
|
|
||||||
fun Source.getMainSource(): Source = if (this is EnhancedHttpSource) {
|
fun Source.getMainSource(): Source = if (this is EnhancedHttpSource) {
|
||||||
this.source()
|
this.source()
|
||||||
} else {
|
} else {
|
||||||
|
1
data/.gitignore
vendored
Normal file
1
data/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/build
|
27
data/build.gradle.kts
Normal file
27
data/build.gradle.kts
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
plugins {
|
||||||
|
id("com.android.library")
|
||||||
|
kotlin("android")
|
||||||
|
id("com.squareup.sqldelight")
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "tachiyomi.data"
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
consumerProguardFiles("consumer-rules.pro")
|
||||||
|
}
|
||||||
|
|
||||||
|
sqldelight {
|
||||||
|
database("Database") {
|
||||||
|
packageName = "tachiyomi.data"
|
||||||
|
dialect = "sqlite:3.24"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":source-api"))
|
||||||
|
api(libs.sqldelight.android.driver)
|
||||||
|
api(libs.sqldelight.coroutines)
|
||||||
|
api(libs.sqldelight.android.paging)
|
||||||
|
}
|
21
data/proguard-rules.pro
vendored
Normal file
21
data/proguard-rules.pro
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Add project specific ProGuard rules here.
|
||||||
|
# You can control the set of applied configuration files using the
|
||||||
|
# proguardFiles setting in build.gradle.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
||||||
|
# If your project uses WebView with JS, uncomment the following
|
||||||
|
# and specify the fully qualified class name to the JavaScript interface
|
||||||
|
# class:
|
||||||
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||||
|
# public *;
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Uncomment this to preserve the line number information for
|
||||||
|
# debugging stack traces.
|
||||||
|
#-keepattributes SourceFile,LineNumberTable
|
||||||
|
|
||||||
|
# If you keep the line number information, uncomment this to
|
||||||
|
# hide the original source file name.
|
||||||
|
#-renamesourcefileattribute SourceFile
|
4
data/src/main/AndroidManifest.xml
Normal file
4
data/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
</manifest>
|
@ -1,4 +1,4 @@
|
|||||||
package eu.kanade.data
|
package tachiyomi.data
|
||||||
|
|
||||||
import androidx.paging.PagingSource
|
import androidx.paging.PagingSource
|
||||||
import com.squareup.sqldelight.Query
|
import com.squareup.sqldelight.Query
|
||||||
@ -7,9 +7,6 @@ import com.squareup.sqldelight.runtime.coroutines.asFlow
|
|||||||
import com.squareup.sqldelight.runtime.coroutines.mapToList
|
import com.squareup.sqldelight.runtime.coroutines.mapToList
|
||||||
import com.squareup.sqldelight.runtime.coroutines.mapToOne
|
import com.squareup.sqldelight.runtime.coroutines.mapToOne
|
||||||
import com.squareup.sqldelight.runtime.coroutines.mapToOneOrNull
|
import com.squareup.sqldelight.runtime.coroutines.mapToOneOrNull
|
||||||
import eu.kanade.data.manga.LibraryQuery
|
|
||||||
import eu.kanade.data.updates.UpdatesQuery
|
|
||||||
import eu.kanade.tachiyomi.Database
|
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
@ -1,4 +1,4 @@
|
|||||||
package eu.kanade.data
|
package tachiyomi.data
|
||||||
|
|
||||||
import com.squareup.sqldelight.ColumnAdapter
|
import com.squareup.sqldelight.ColumnAdapter
|
||||||
import eu.kanade.tachiyomi.source.model.UpdateStrategy
|
import eu.kanade.tachiyomi.source.model.UpdateStrategy
|
@ -1,8 +1,7 @@
|
|||||||
package eu.kanade.data
|
package tachiyomi.data
|
||||||
|
|
||||||
import androidx.paging.PagingSource
|
import androidx.paging.PagingSource
|
||||||
import com.squareup.sqldelight.Query
|
import com.squareup.sqldelight.Query
|
||||||
import eu.kanade.tachiyomi.Database
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
interface DatabaseHandler {
|
interface DatabaseHandler {
|
@ -1,40 +1,35 @@
|
|||||||
package eu.kanade.data.manga
|
package tachiyomi.data
|
||||||
|
|
||||||
import com.squareup.sqldelight.Query
|
import com.squareup.sqldelight.Query
|
||||||
import com.squareup.sqldelight.db.SqlCursor
|
import com.squareup.sqldelight.db.SqlCursor
|
||||||
import com.squareup.sqldelight.db.SqlDriver
|
import com.squareup.sqldelight.db.SqlDriver
|
||||||
import com.squareup.sqldelight.internal.copyOnWriteList
|
import com.squareup.sqldelight.internal.copyOnWriteList
|
||||||
import eu.kanade.data.listOfStringsAdapter
|
|
||||||
import eu.kanade.data.listOfStringsAndAdapter
|
|
||||||
import eu.kanade.data.updateStrategyAdapter
|
|
||||||
import eu.kanade.domain.library.model.LibraryManga
|
|
||||||
import exh.source.MERGED_SOURCE_ID
|
import exh.source.MERGED_SOURCE_ID
|
||||||
|
import tachiyomi.view.LibraryView
|
||||||
|
|
||||||
private val mapper = { cursor: SqlCursor ->
|
private val mapper = { cursor: SqlCursor ->
|
||||||
LibraryManga(
|
LibraryView(
|
||||||
manga = mangaMapper(
|
_id = cursor.getLong(0)!!,
|
||||||
cursor.getLong(0)!!,
|
source = cursor.getLong(1)!!,
|
||||||
cursor.getLong(1)!!,
|
url = cursor.getString(2)!!,
|
||||||
cursor.getString(2)!!,
|
artist = cursor.getString(3),
|
||||||
cursor.getString(3),
|
author = cursor.getString(4),
|
||||||
cursor.getString(4),
|
description = cursor.getString(5),
|
||||||
cursor.getString(5),
|
genre = cursor.getString(6)?.let(listOfStringsAdapter::decode),
|
||||||
cursor.getString(6)?.let(listOfStringsAdapter::decode),
|
title = cursor.getString(7)!!,
|
||||||
cursor.getString(7)!!,
|
status = cursor.getLong(8)!!,
|
||||||
cursor.getLong(8)!!,
|
thumbnail_url = cursor.getString(9),
|
||||||
cursor.getString(9),
|
favorite = cursor.getLong(10)!! == 1L,
|
||||||
cursor.getLong(10)!! == 1L,
|
last_update = cursor.getLong(11) ?: 0,
|
||||||
cursor.getLong(11) ?: 0,
|
next_update = null,
|
||||||
null,
|
initialized = cursor.getLong(13)!! == 1L,
|
||||||
cursor.getLong(13)!! == 1L,
|
viewer = cursor.getLong(14)!!,
|
||||||
cursor.getLong(14)!!,
|
chapter_flags = cursor.getLong(15)!!,
|
||||||
cursor.getLong(15)!!,
|
cover_last_modified = cursor.getLong(16)!!,
|
||||||
cursor.getLong(16)!!,
|
date_added = cursor.getLong(17)!!,
|
||||||
cursor.getLong(17)!!,
|
filtered_scanlators = cursor.getString(18)?.let(listOfStringsAndAdapter::decode),
|
||||||
cursor.getString(18)?.let(listOfStringsAndAdapter::decode),
|
update_strategy = updateStrategyAdapter.decode(cursor.getLong(19)!!),
|
||||||
updateStrategyAdapter.decode(cursor.getLong(19)!!),
|
totalCount = cursor.getLong(20)!!,
|
||||||
),
|
|
||||||
totalChapters = cursor.getLong(20)!!,
|
|
||||||
readCount = cursor.getLong(21)!!,
|
readCount = cursor.getLong(21)!!,
|
||||||
latestUpload = cursor.getLong(22)!!,
|
latestUpload = cursor.getLong(22)!!,
|
||||||
chapterFetchedAt = cursor.getLong(23)!!,
|
chapterFetchedAt = cursor.getLong(23)!!,
|
||||||
@ -44,7 +39,7 @@ private val mapper = { cursor: SqlCursor ->
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
class LibraryQuery(val driver: SqlDriver) : Query<LibraryManga>(copyOnWriteList(), mapper) {
|
class LibraryQuery(val driver: SqlDriver) : Query<LibraryView>(copyOnWriteList(), mapper) {
|
||||||
override fun execute(): SqlCursor {
|
override fun execute(): SqlCursor {
|
||||||
return driver.executeQuery(
|
return driver.executeQuery(
|
||||||
null,
|
null,
|
@ -1,9 +1,8 @@
|
|||||||
package eu.kanade.data
|
package tachiyomi.data
|
||||||
|
|
||||||
import androidx.paging.PagingSource
|
import androidx.paging.PagingSource
|
||||||
import androidx.paging.PagingState
|
import androidx.paging.PagingState
|
||||||
import com.squareup.sqldelight.Query
|
import com.squareup.sqldelight.Query
|
||||||
import eu.kanade.tachiyomi.Database
|
|
||||||
import kotlin.properties.Delegates
|
import kotlin.properties.Delegates
|
||||||
|
|
||||||
class QueryPagingSource<RowType : Any>(
|
class QueryPagingSource<RowType : Any>(
|
@ -1,4 +1,4 @@
|
|||||||
package eu.kanade.data
|
package tachiyomi.data
|
||||||
|
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
@ -1,14 +1,14 @@
|
|||||||
package eu.kanade.data.updates
|
package tachiyomi.data
|
||||||
|
|
||||||
import com.squareup.sqldelight.Query
|
import com.squareup.sqldelight.Query
|
||||||
import com.squareup.sqldelight.db.SqlCursor
|
import com.squareup.sqldelight.db.SqlCursor
|
||||||
import com.squareup.sqldelight.db.SqlDriver
|
import com.squareup.sqldelight.db.SqlDriver
|
||||||
import com.squareup.sqldelight.internal.copyOnWriteList
|
import com.squareup.sqldelight.internal.copyOnWriteList
|
||||||
import eu.kanade.domain.updates.model.UpdatesWithRelations
|
|
||||||
import exh.source.MERGED_SOURCE_ID
|
import exh.source.MERGED_SOURCE_ID
|
||||||
|
import tachiyomi.view.UpdatesView
|
||||||
|
|
||||||
private val mapper = { cursor: SqlCursor ->
|
private val mapper = { cursor: SqlCursor ->
|
||||||
updateWithRelationMapper(
|
UpdatesView(
|
||||||
cursor.getLong(0)!!,
|
cursor.getLong(0)!!,
|
||||||
cursor.getString(1)!!,
|
cursor.getString(1)!!,
|
||||||
cursor.getLong(2)!!,
|
cursor.getLong(2)!!,
|
||||||
@ -26,7 +26,7 @@ private val mapper = { cursor: SqlCursor ->
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
class UpdatesQuery(val driver: SqlDriver, val after: Long) : Query<UpdatesWithRelations>(copyOnWriteList(), mapper) {
|
class UpdatesQuery(val driver: SqlDriver, val after: Long) : Query<UpdatesView>(copyOnWriteList(), mapper) {
|
||||||
override fun execute(): SqlCursor {
|
override fun execute(): SqlCursor {
|
||||||
return driver.executeQuery(
|
return driver.executeQuery(
|
||||||
null,
|
null,
|
0
data/src/main/sqldelight/tachiyomi/migrations/4.sqm
Normal file
0
data/src/main/sqldelight/tachiyomi/migrations/4.sqm
Normal file
@ -44,3 +44,4 @@ include(":i18n")
|
|||||||
include(":source-api")
|
include(":source-api")
|
||||||
include(":core")
|
include(":core")
|
||||||
include(":macrobenchmark")
|
include(":macrobenchmark")
|
||||||
|
include(":data")
|
||||||
|
11
source-api/src/main/java/exh/source/SourceIds.kt
Normal file
11
source-api/src/main/java/exh/source/SourceIds.kt
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
package exh.source
|
||||||
|
|
||||||
|
// Lewd source IDs
|
||||||
|
const val LEWD_SOURCE_SERIES = 6900L
|
||||||
|
const val EH_SOURCE_ID = LEWD_SOURCE_SERIES + 1
|
||||||
|
const val EXH_SOURCE_ID = LEWD_SOURCE_SERIES + 2
|
||||||
|
const val PURURIN_SOURCE_ID = 2221515250486218861
|
||||||
|
const val TSUMINO_SOURCE_ID = 6707338697138388238
|
||||||
|
const val EIGHTMUSES_SOURCE_ID = 1802675169972965535
|
||||||
|
const val HBROWSE_SOURCE_ID = 1401584337232758222
|
||||||
|
const val MERGED_SOURCE_ID = LEWD_SOURCE_SERIES + 69
|
Loading…
x
Reference in New Issue
Block a user