Various changes
This commit is contained in:
@@ -1,121 +1,32 @@
|
||||
package exh.metadata
|
||||
|
||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||
import eu.kanade.tachiyomi.source.model.SManga
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
import eu.kanade.tachiyomi.source.online.LewdSource
|
||||
import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||
import exh.*
|
||||
import exh.metadata.models.ExGalleryMetadata
|
||||
import exh.metadata.models.NHentaiMetadata
|
||||
import exh.metadata.models.PervEdenGalleryMetadata
|
||||
import exh.metadata.models.SearchableGalleryMetadata
|
||||
import exh.metadata.models.*
|
||||
import io.realm.Realm
|
||||
import io.realm.RealmQuery
|
||||
import io.realm.RealmResults
|
||||
import rx.Observable
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
fun Realm.ehMetaQueryFromUrl(url: String,
|
||||
exh: Boolean,
|
||||
meta: RealmQuery<ExGalleryMetadata>? = null) =
|
||||
ehMetadataQuery(
|
||||
ExGalleryMetadata.galleryId(url),
|
||||
ExGalleryMetadata.galleryToken(url),
|
||||
exh,
|
||||
meta
|
||||
)
|
||||
|
||||
fun Realm.ehMetadataQuery(gId: String,
|
||||
gToken: String,
|
||||
exh: Boolean,
|
||||
meta: RealmQuery<ExGalleryMetadata>? = null)
|
||||
= (meta ?: where(ExGalleryMetadata::class.java))
|
||||
.equalTo(ExGalleryMetadata::gId.name, gId)
|
||||
.equalTo(ExGalleryMetadata::gToken.name, gToken)
|
||||
.equalTo(ExGalleryMetadata::exh.name, exh)
|
||||
|
||||
fun Realm.loadEh(gId: String, gToken: String, exh: Boolean): ExGalleryMetadata?
|
||||
= ehMetadataQuery(gId, gToken, exh)
|
||||
.findFirst()
|
||||
|
||||
fun Realm.loadEhAsync(gId: String, gToken: String, exh: Boolean): Observable<ExGalleryMetadata?>
|
||||
= ehMetadataQuery(gId, gToken, exh)
|
||||
.findFirstAsync()
|
||||
.asObservable()
|
||||
|
||||
private fun pervEdenSourceToLang(source: Long)
|
||||
= when (source) {
|
||||
PERV_EDEN_EN_SOURCE_ID -> "en"
|
||||
PERV_EDEN_IT_SOURCE_ID -> "it"
|
||||
else -> throw IllegalArgumentException()
|
||||
}
|
||||
|
||||
fun Realm.pervEdenMetaQueryFromUrl(url: String,
|
||||
source: Long,
|
||||
meta: RealmQuery<PervEdenGalleryMetadata>? = null) =
|
||||
pervEdenMetadataQuery(
|
||||
PervEdenGalleryMetadata.pvIdFromUrl(url),
|
||||
source,
|
||||
meta
|
||||
)
|
||||
|
||||
fun Realm.pervEdenMetadataQuery(pvId: String,
|
||||
source: Long,
|
||||
meta: RealmQuery<PervEdenGalleryMetadata>? = null)
|
||||
= (meta ?: where(PervEdenGalleryMetadata::class.java))
|
||||
.equalTo(PervEdenGalleryMetadata::lang.name, pervEdenSourceToLang(source))
|
||||
.equalTo(PervEdenGalleryMetadata::pvId.name, pvId)
|
||||
|
||||
fun Realm.loadPervEden(pvId: String, source: Long): PervEdenGalleryMetadata?
|
||||
= pervEdenMetadataQuery(pvId, source)
|
||||
.findFirst()
|
||||
|
||||
fun Realm.loadPervEdenAsync(pvId: String, source: Long): Observable<PervEdenGalleryMetadata?>
|
||||
= pervEdenMetadataQuery(pvId, source)
|
||||
.findFirstAsync()
|
||||
.asObservable()
|
||||
|
||||
fun Realm.nhentaiMetaQueryFromUrl(url: String,
|
||||
meta: RealmQuery<NHentaiMetadata>? = null) =
|
||||
nhentaiMetadataQuery(
|
||||
NHentaiMetadata.nhIdFromUrl(url),
|
||||
meta
|
||||
)
|
||||
|
||||
fun Realm.nhentaiMetadataQuery(nhId: Long,
|
||||
meta: RealmQuery<NHentaiMetadata>? = null)
|
||||
= (meta ?: where(NHentaiMetadata::class.java))
|
||||
.equalTo(NHentaiMetadata::nhId.name, nhId)
|
||||
|
||||
fun Realm.loadNhentai(nhId: Long): NHentaiMetadata?
|
||||
= nhentaiMetadataQuery(nhId)
|
||||
.findFirst()
|
||||
|
||||
fun Realm.loadNhentaiAsync(nhId: Long): Observable<NHentaiMetadata?>
|
||||
= nhentaiMetadataQuery(nhId)
|
||||
.findFirstAsync()
|
||||
.asObservable()
|
||||
|
||||
fun Realm.loadAllMetadata(): Map<KClass<out SearchableGalleryMetadata>, RealmResults<out SearchableGalleryMetadata>> =
|
||||
listOf<Pair<KClass<out SearchableGalleryMetadata>, RealmQuery<out SearchableGalleryMetadata>>>(
|
||||
Pair(ExGalleryMetadata::class, where(ExGalleryMetadata::class.java)),
|
||||
Pair(NHentaiMetadata::class, where(NHentaiMetadata::class.java)),
|
||||
Pair(PervEdenGalleryMetadata::class, where(PervEdenGalleryMetadata::class.java))
|
||||
).map {
|
||||
Pair(it.first, it.second.findAllSorted(SearchableGalleryMetadata::mangaId.name))
|
||||
Injekt.get<SourceManager>().getOnlineSources().filterIsInstance<LewdSource<*, *>>().map {
|
||||
it.queryAll()
|
||||
}.associate {
|
||||
it.clazz to it.query(this@loadAllMetadata).findAllSorted(SearchableGalleryMetadata::mangaId.name)
|
||||
}.toMap()
|
||||
|
||||
fun Realm.queryMetadataFromManga(manga: Manga,
|
||||
meta: RealmQuery<out SearchableGalleryMetadata>? = null): RealmQuery<out SearchableGalleryMetadata> =
|
||||
when(manga.source) {
|
||||
EH_SOURCE_ID -> ehMetaQueryFromUrl(manga.url, false, meta as? RealmQuery<ExGalleryMetadata>)
|
||||
EXH_SOURCE_ID -> ehMetaQueryFromUrl(manga.url, true, meta as? RealmQuery<ExGalleryMetadata>)
|
||||
PERV_EDEN_EN_SOURCE_ID,
|
||||
PERV_EDEN_IT_SOURCE_ID ->
|
||||
pervEdenMetaQueryFromUrl(manga.url, manga.source, meta as? RealmQuery<PervEdenGalleryMetadata>)
|
||||
NHENTAI_SOURCE_ID -> nhentaiMetaQueryFromUrl(manga.url, meta as? RealmQuery<NHentaiMetadata>)
|
||||
else -> throw IllegalArgumentException("Unknown source type!")
|
||||
}
|
||||
meta: RealmQuery<SearchableGalleryMetadata>? = null):
|
||||
RealmQuery<out SearchableGalleryMetadata> =
|
||||
Injekt.get<SourceManager>().get(manga.source)?.let {
|
||||
(it as LewdSource<*, *>).queryFromUrl(manga.url) as GalleryQuery<SearchableGalleryMetadata>
|
||||
}?.query(this, meta) ?: throw IllegalArgumentException("Unknown source type!")
|
||||
|
||||
fun Realm.syncMangaIds(mangas: List<LibraryItem>) {
|
||||
Timber.d("--> EH: Begin syncing ${mangas.size} manga IDs...")
|
||||
@@ -138,11 +49,4 @@ fun Realm.syncMangaIds(mangas: List<LibraryItem>) {
|
||||
}
|
||||
|
||||
val Manga.metadataClass
|
||||
get() = when (source) {
|
||||
EH_SOURCE_ID,
|
||||
EXH_SOURCE_ID -> ExGalleryMetadata::class
|
||||
PERV_EDEN_IT_SOURCE_ID,
|
||||
PERV_EDEN_EN_SOURCE_ID -> PervEdenGalleryMetadata::class
|
||||
NHENTAI_SOURCE_ID -> NHentaiMetadata::class
|
||||
else -> null
|
||||
}
|
||||
get() = (Injekt.get<SourceManager>().get(source) as? LewdSource<*, *>)?.queryAll()?.clazz
|
||||
|
||||
Reference in New Issue
Block a user