diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ExtensionStoreDataLoader.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ExtensionStoreDataLoader.kt index bba4788b6..77f6181e3 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ExtensionStoreDataLoader.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/dataLoaders/ExtensionStoreDataLoader.kt @@ -21,26 +21,6 @@ class ExtensionStoreDataLoader : KotlinDataLoader { override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> - future { - transaction { - addLogger(Slf4jSqlDebugLogger) - val manga = - ExtensionStoreTable - .selectAll() - .where { ExtensionStoreTable.indexUrl inList ids } - .map { ExtensionStoreType(it) } - .associateBy { it.indexUrl } - ids.map { manga[it] } - } - } - } -} - -class ExtensionStoreForExtension : KotlinDataLoader { - override val dataLoaderName = "ExtensionStoreForExtension" - - override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = - DataLoaderFactory.newDataLoader { ids -> future { transaction { addLogger(Slf4jSqlDebugLogger) @@ -50,14 +30,14 @@ class ExtensionStoreForExtension : KotlinDataLoader .where { ExtensionStoreTable.indexUrl inList ids } .map { ExtensionStoreType(it) } .associateBy { it.indexUrl } - ids.map { (extensionStoreByIndexUrl[it]) } + ids.map { extensionStoreByIndexUrl[it] } } } } } -class ExtensionForExtensionStore : KotlinDataLoader { - override val dataLoaderName = "ExtensionForExtensionStore" +class ExtensionsForExtensionStore : KotlinDataLoader { + override val dataLoaderName = "ExtensionsForExtensionStore" override fun getDataLoader(graphQLContext: GraphQLContext): DataLoader = DataLoaderFactory.newDataLoader { ids -> diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskDataLoaderRegistryFactory.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskDataLoaderRegistryFactory.kt index 07f1d7d24..6dc1cbfcc 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskDataLoaderRegistryFactory.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/server/TachideskDataLoaderRegistryFactory.kt @@ -20,10 +20,9 @@ import suwayomi.tachidesk.graphql.dataLoaders.DisplayScoreForTrackRecordDataLoad import suwayomi.tachidesk.graphql.dataLoaders.DisplayScoreForTrackSearchDataLoader import suwayomi.tachidesk.graphql.dataLoaders.DownloadedChapterCountForMangaDataLoader import suwayomi.tachidesk.graphql.dataLoaders.ExtensionDataLoader -import suwayomi.tachidesk.graphql.dataLoaders.ExtensionForExtensionStore +import suwayomi.tachidesk.graphql.dataLoaders.ExtensionsForExtensionStore import suwayomi.tachidesk.graphql.dataLoaders.ExtensionForSourceDataLoader import suwayomi.tachidesk.graphql.dataLoaders.ExtensionStoreDataLoader -import suwayomi.tachidesk.graphql.dataLoaders.ExtensionStoreForExtension import suwayomi.tachidesk.graphql.dataLoaders.FirstUnreadChapterForMangaDataLoader import suwayomi.tachidesk.graphql.dataLoaders.GlobalMetaDataLoader import suwayomi.tachidesk.graphql.dataLoaders.HasDuplicateChaptersForMangaDataLoader @@ -81,9 +80,8 @@ class TachideskDataLoaderRegistryFactory { SourceMetaDataLoader(), ExtensionDataLoader(), ExtensionForSourceDataLoader(), - ExtensionForExtensionStore(), + ExtensionsForExtensionStore(), ExtensionStoreDataLoader(), - ExtensionStoreForExtension(), TrackerDataLoader(), TrackerStatusesDataLoader(), TrackerScoresDataLoader(), diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ExtensionStoreType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ExtensionStoreType.kt index 2106a4f79..da794a7db 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ExtensionStoreType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ExtensionStoreType.kt @@ -40,7 +40,7 @@ class ExtensionStoreType( ) fun extensions(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture = - dataFetchingEnvironment.getValueFromDataLoader("ExtensionForExtensionStore", indexUrl) + dataFetchingEnvironment.getValueFromDataLoader("ExtensionsForExtensionStore", indexUrl) } data class ExtensionStoreNodeList( diff --git a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ExtensionType.kt b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ExtensionType.kt index c276370f7..cbddc8e59 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ExtensionType.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/graphql/types/ExtensionType.kt @@ -72,7 +72,7 @@ class ExtensionType( dataFetchingEnvironment.getValueFromDataLoader("SourcesForExtensionDataLoader", pkgName) fun extensionStore(dataFetchingEnvironment: DataFetchingEnvironment): CompletableFuture = - dataFetchingEnvironment.getValueFromDataLoader("ExtensionStoreForExtension", storeIndexUrl.orEmpty()) + dataFetchingEnvironment.getValueFromDataLoader("ExtensionStoreDataLoader", storeIndexUrl.orEmpty()) } data class ExtensionNodeList( diff --git a/server/src/main/kotlin/suwayomi/tachidesk/manga/model/table/ExtensionStoreTable.kt b/server/src/main/kotlin/suwayomi/tachidesk/manga/model/table/ExtensionStoreTable.kt index 1c638b437..84de416f5 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/manga/model/table/ExtensionStoreTable.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/manga/model/table/ExtensionStoreTable.kt @@ -10,7 +10,7 @@ package suwayomi.tachidesk.manga.model.table import org.jetbrains.exposed.v1.core.dao.id.IntIdTable object ExtensionStoreTable : IntIdTable() { - val indexUrl = varchar("index_url", 2048) + val indexUrl = varchar("index_url", 2048).uniqueIndex() val name = varchar("name", 256) val badgeLabel = varchar("badge_label", 32) val signingKey = varchar("signing_key", 512) diff --git a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0058_AddExtensionStore.kt b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0058_AddExtensionStore.kt index f498be1f0..dd4ba1af2 100644 --- a/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0058_AddExtensionStore.kt +++ b/server/src/main/kotlin/suwayomi/tachidesk/server/database/migration/M0058_AddExtensionStore.kt @@ -14,7 +14,7 @@ import org.jetbrains.exposed.v1.core.dao.id.IntIdTable @Suppress("ClassName", "unused") class M0058_AddExtensionStore : AddTableMigration() { private class ExtensionStoreTable : IntIdTable() { - val indexUrl = varchar("index_url", 2048) + val indexUrl = varchar("index_url", 2048).uniqueIndex() val name = varchar("name", 256) val badgeLabel = varchar("badge_label", 32) val signingKey = varchar("signing_key", 512)