refactor: make dslRO transaction aware

This commit is contained in:
Gauthier Roebroeck 2025-09-09 12:32:07 +08:00
parent e850cdcd2f
commit 69ba569b04
33 changed files with 180 additions and 87 deletions

View file

@ -13,6 +13,7 @@ import org.gotson.komga.infrastructure.image.MosaicGenerator
import org.gotson.komga.infrastructure.metadata.comicrack.ReadListProvider import org.gotson.komga.infrastructure.metadata.comicrack.ReadListProvider
import org.springframework.context.ApplicationEventPublisher import org.springframework.context.ApplicationEventPublisher
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import org.springframework.transaction.support.TransactionTemplate import org.springframework.transaction.support.TransactionTemplate
private val logger = KotlinLogging.logger {} private val logger = KotlinLogging.logger {}
@ -31,6 +32,7 @@ class ReadListLifecycle(
@Throws( @Throws(
DuplicateNameException::class, DuplicateNameException::class,
) )
@Transactional
fun addReadList(readList: ReadList): ReadList { fun addReadList(readList: ReadList): ReadList {
logger.info { "Adding new read list: $readList" } logger.info { "Adding new read list: $readList" }
@ -44,6 +46,7 @@ class ReadListLifecycle(
return readListRepository.findByIdOrNull(readList.id)!! return readListRepository.findByIdOrNull(readList.id)!!
} }
@Transactional
fun updateReadList(toUpdate: ReadList) { fun updateReadList(toUpdate: ReadList) {
logger.info { "Update read list: $toUpdate" } logger.info { "Update read list: $toUpdate" }
val existing = val existing =
@ -71,6 +74,7 @@ class ReadListLifecycle(
* Add book to read list by name. * Add book to read list by name.
* Read list will be created if it doesn't exist. * Read list will be created if it doesn't exist.
*/ */
@Transactional
fun addBookToReadList( fun addBookToReadList(
readListName: String, readListName: String,
book: Book, book: Book,

View file

@ -11,6 +11,7 @@ import org.gotson.komga.domain.persistence.ThumbnailSeriesCollectionRepository
import org.gotson.komga.infrastructure.image.MosaicGenerator import org.gotson.komga.infrastructure.image.MosaicGenerator
import org.springframework.context.ApplicationEventPublisher import org.springframework.context.ApplicationEventPublisher
import org.springframework.stereotype.Service import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import org.springframework.transaction.support.TransactionTemplate import org.springframework.transaction.support.TransactionTemplate
private val logger = KotlinLogging.logger {} private val logger = KotlinLogging.logger {}
@ -27,6 +28,7 @@ class SeriesCollectionLifecycle(
@Throws( @Throws(
DuplicateNameException::class, DuplicateNameException::class,
) )
@Transactional
fun addCollection(collection: SeriesCollection): SeriesCollection { fun addCollection(collection: SeriesCollection): SeriesCollection {
logger.info { "Adding new collection: $collection" } logger.info { "Adding new collection: $collection" }
@ -40,6 +42,7 @@ class SeriesCollectionLifecycle(
return collectionRepository.findByIdOrNull(collection.id)!! return collectionRepository.findByIdOrNull(collection.id)!!
} }
@Transactional
fun updateCollection(toUpdate: SeriesCollection) { fun updateCollection(toUpdate: SeriesCollection) {
logger.info { "Update collection: $toUpdate" } logger.info { "Update collection: $toUpdate" }
@ -67,6 +70,7 @@ class SeriesCollectionLifecycle(
* Add series to collection by name. * Add series to collection by name.
* Collection will be created if it doesn't exist. * Collection will be created if it doesn't exist.
*/ */
@Transactional
fun addSeriesToCollection( fun addSeriesToCollection(
collectionName: String, collectionName: String,
series: Series, series: Series,

View file

@ -0,0 +1,21 @@
package org.gotson.komga.infrastructure.jooq
import org.jooq.DSLContext
import org.springframework.transaction.support.TransactionSynchronizationManager
abstract class SplitDslDaoBase {
val dslRW: DSLContext
private val _dslRO: DSLContext
constructor(dslRW: DSLContext, dslRO: DSLContext) {
this.dslRW = dslRW
this._dslRO = dslRO
}
val dslRO: DSLContext
get() =
if (TransactionSynchronizationManager.isActualTransactionActive() && !TransactionSynchronizationManager.isCurrentTransactionReadOnly())
dslRW
else
_dslRO
}

View file

@ -3,6 +3,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.AuthenticationActivity import org.gotson.komga.domain.model.AuthenticationActivity
import org.gotson.komga.domain.model.KomgaUser import org.gotson.komga.domain.model.KomgaUser
import org.gotson.komga.domain.persistence.AuthenticationActivityRepository import org.gotson.komga.domain.persistence.AuthenticationActivityRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.toOrderBy import org.gotson.komga.infrastructure.jooq.toOrderBy
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.AuthenticationActivityRecord import org.gotson.komga.jooq.main.tables.records.AuthenticationActivityRecord
@ -21,9 +22,10 @@ import java.time.LocalDateTime
@Component @Component
class AuthenticationActivityDao( class AuthenticationActivityDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
) : AuthenticationActivityRepository { ) : SplitDslDaoBase(dslRW, dslRO),
AuthenticationActivityRepository {
private val aa = Tables.AUTHENTICATION_ACTIVITY private val aa = Tables.AUTHENTICATION_ACTIVITY
private val sorts = private val sorts =

View file

@ -1,6 +1,7 @@
package org.gotson.komga.infrastructure.jooq.main package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.ContentRestrictions import org.gotson.komga.domain.model.ContentRestrictions
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.toCondition import org.gotson.komga.infrastructure.jooq.toCondition
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.jooq.DSLContext import org.jooq.DSLContext
@ -19,8 +20,9 @@ import java.time.LocalDateTime
@Component @Component
class BookCommonDao( class BookCommonDao(
@Qualifier("dslContextRO") private val dslRO: DSLContext, dslRW: DSLContext,
) { @Qualifier("dslContextRO") dslRO: DSLContext,
) : SplitDslDaoBase(dslRW, dslRO) {
private val b = Tables.BOOK private val b = Tables.BOOK
private val m = Tables.MEDIA private val m = Tables.MEDIA
private val d = Tables.BOOK_METADATA private val d = Tables.BOOK_METADATA

View file

@ -6,6 +6,7 @@ import org.gotson.komga.domain.model.SearchContext
import org.gotson.komga.domain.persistence.BookRepository import org.gotson.komga.domain.persistence.BookRepository
import org.gotson.komga.infrastructure.jooq.BookSearchHelper import org.gotson.komga.infrastructure.jooq.BookSearchHelper
import org.gotson.komga.infrastructure.jooq.RequiredJoin import org.gotson.komga.infrastructure.jooq.RequiredJoin
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.infrastructure.jooq.rlbAlias import org.gotson.komga.infrastructure.jooq.rlbAlias
import org.gotson.komga.infrastructure.jooq.toOrderBy import org.gotson.komga.infrastructure.jooq.toOrderBy
@ -30,10 +31,11 @@ import java.time.ZoneId
@Component @Component
class BookDao( class BookDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : BookRepository { ) : SplitDslDaoBase(dslRW, dslRO),
BookRepository {
private val b = Tables.BOOK private val b = Tables.BOOK
private val m = Tables.MEDIA private val m = Tables.MEDIA
private val d = Tables.BOOK_METADATA private val d = Tables.BOOK_METADATA

View file

@ -7,6 +7,7 @@ import org.gotson.komga.domain.model.SearchContext
import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource
import org.gotson.komga.infrastructure.jooq.BookSearchHelper import org.gotson.komga.infrastructure.jooq.BookSearchHelper
import org.gotson.komga.infrastructure.jooq.RequiredJoin import org.gotson.komga.infrastructure.jooq.RequiredJoin
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable import org.gotson.komga.infrastructure.jooq.TempTable
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.infrastructure.jooq.noCase import org.gotson.komga.infrastructure.jooq.noCase
@ -51,11 +52,13 @@ import java.net.URL
@Component @Component
class BookDtoDao( class BookDtoDao(
@Qualifier("dslContextRO") private val dslRO: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") dslRO: DSLContext,
private val luceneHelper: LuceneHelper, private val luceneHelper: LuceneHelper,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
private val bookCommonDao: BookCommonDao, private val bookCommonDao: BookCommonDao,
) : BookDtoRepository { ) : SplitDslDaoBase(dslRW, dslRO),
BookDtoRepository {
private val b = Tables.BOOK private val b = Tables.BOOK
private val m = Tables.MEDIA private val m = Tables.MEDIA
private val d = Tables.BOOK_METADATA private val d = Tables.BOOK_METADATA

View file

@ -3,6 +3,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.Author import org.gotson.komga.domain.model.Author
import org.gotson.komga.domain.model.BookMetadataAggregation import org.gotson.komga.domain.model.BookMetadataAggregation
import org.gotson.komga.domain.persistence.BookMetadataAggregationRepository import org.gotson.komga.domain.persistence.BookMetadataAggregationRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.BookMetadataAggregationAuthorRecord import org.gotson.komga.jooq.main.tables.records.BookMetadataAggregationAuthorRecord
@ -18,10 +19,11 @@ import java.time.ZoneId
@Component @Component
class BookMetadataAggregationDao( class BookMetadataAggregationDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : BookMetadataAggregationRepository { ) : SplitDslDaoBase(dslRW, dslRO),
BookMetadataAggregationRepository {
private val d = Tables.BOOK_METADATA_AGGREGATION private val d = Tables.BOOK_METADATA_AGGREGATION
private val a = Tables.BOOK_METADATA_AGGREGATION_AUTHOR private val a = Tables.BOOK_METADATA_AGGREGATION_AUTHOR
private val t = Tables.BOOK_METADATA_AGGREGATION_TAG private val t = Tables.BOOK_METADATA_AGGREGATION_TAG

View file

@ -4,6 +4,7 @@ import org.gotson.komga.domain.model.Author
import org.gotson.komga.domain.model.BookMetadata import org.gotson.komga.domain.model.BookMetadata
import org.gotson.komga.domain.model.WebLink import org.gotson.komga.domain.model.WebLink
import org.gotson.komga.domain.persistence.BookMetadataRepository import org.gotson.komga.domain.persistence.BookMetadataRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.BookMetadataAuthorRecord import org.gotson.komga.jooq.main.tables.records.BookMetadataAuthorRecord
@ -20,10 +21,11 @@ import java.time.ZoneId
@Component @Component
class BookMetadataDao( class BookMetadataDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : BookMetadataRepository { ) : SplitDslDaoBase(dslRW, dslRO),
BookMetadataRepository {
private val d = Tables.BOOK_METADATA private val d = Tables.BOOK_METADATA
private val a = Tables.BOOK_METADATA_AUTHOR private val a = Tables.BOOK_METADATA_AUTHOR
private val bt = Tables.BOOK_METADATA_TAG private val bt = Tables.BOOK_METADATA_TAG

View file

@ -1,5 +1,6 @@
package org.gotson.komga.infrastructure.jooq.main package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.interfaces.api.rest.dto.ClientSettingDto import org.gotson.komga.interfaces.api.rest.dto.ClientSettingDto
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.jooq.DSLContext import org.jooq.DSLContext
@ -8,9 +9,9 @@ import org.springframework.stereotype.Component
@Component @Component
class ClientSettingsDtoDao( class ClientSettingsDtoDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
) { ) : SplitDslDaoBase(dslRW, dslRO) {
private val g = Tables.CLIENT_SETTINGS_GLOBAL private val g = Tables.CLIENT_SETTINGS_GLOBAL
private val u = Tables.CLIENT_SETTINGS_USER private val u = Tables.CLIENT_SETTINGS_USER

View file

@ -1,5 +1,6 @@
package org.gotson.komga.infrastructure.jooq.main package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.toOrderBy import org.gotson.komga.infrastructure.jooq.toOrderBy
import org.gotson.komga.interfaces.api.persistence.HistoricalEventDtoRepository import org.gotson.komga.interfaces.api.persistence.HistoricalEventDtoRepository
import org.gotson.komga.interfaces.api.rest.dto.HistoricalEventDto import org.gotson.komga.interfaces.api.rest.dto.HistoricalEventDto
@ -15,8 +16,10 @@ import org.springframework.stereotype.Component
@Component @Component
class HistoricalEventDtoDao( class HistoricalEventDtoDao(
@Qualifier("dslContextRO") private val dslRO: DSLContext, dslRW: DSLContext,
) : HistoricalEventDtoRepository { @Qualifier("dslContextRO") dslRO: DSLContext,
) : SplitDslDaoBase(dslRW, dslRO),
HistoricalEventDtoRepository {
private val e = Tables.HISTORICAL_EVENT private val e = Tables.HISTORICAL_EVENT
private val ep = Tables.HISTORICAL_EVENT_PROPERTIES private val ep = Tables.HISTORICAL_EVENT_PROPERTIES

View file

@ -2,6 +2,7 @@ package org.gotson.komga.infrastructure.jooq.main
import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.ObjectMapper
import org.gotson.komga.domain.model.MediaExtensionEpub import org.gotson.komga.domain.model.MediaExtensionEpub
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.deserializeMediaExtension import org.gotson.komga.infrastructure.jooq.deserializeMediaExtension
import org.gotson.komga.interfaces.api.kobo.dto.ContributorDto import org.gotson.komga.interfaces.api.kobo.dto.ContributorDto
import org.gotson.komga.interfaces.api.kobo.dto.KoboBookMetadataDto import org.gotson.komga.interfaces.api.kobo.dto.KoboBookMetadataDto
@ -16,9 +17,11 @@ import java.time.ZoneId
@Component @Component
class KoboDtoDao( class KoboDtoDao(
@Qualifier("dslContextRO") private val dslRO: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") dslRO: DSLContext,
private val mapper: ObjectMapper, private val mapper: ObjectMapper,
) : KoboDtoRepository { ) : SplitDslDaoBase(dslRW, dslRO),
KoboDtoRepository {
private val b = Tables.BOOK private val b = Tables.BOOK
private val m = Tables.MEDIA private val m = Tables.MEDIA
private val d = Tables.BOOK_METADATA private val d = Tables.BOOK_METADATA

View file

@ -7,6 +7,7 @@ import org.gotson.komga.domain.model.ContentRestrictions
import org.gotson.komga.domain.model.KomgaUser import org.gotson.komga.domain.model.KomgaUser
import org.gotson.komga.domain.model.UserRoles import org.gotson.komga.domain.model.UserRoles
import org.gotson.komga.domain.persistence.KomgaUserRepository import org.gotson.komga.domain.persistence.KomgaUserRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.UserApiKeyRecord import org.gotson.komga.jooq.main.tables.records.UserApiKeyRecord
import org.gotson.komga.language.toCurrentTimeZone import org.gotson.komga.language.toCurrentTimeZone
@ -21,9 +22,10 @@ import java.time.ZoneId
@Component @Component
class KomgaUserDao( class KomgaUserDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
) : KomgaUserRepository { ) : SplitDslDaoBase(dslRW, dslRO),
KomgaUserRepository {
private val u = Tables.USER private val u = Tables.USER
private val ur = Tables.USER_ROLE private val ur = Tables.USER_ROLE
private val ul = Tables.USER_LIBRARY_SHARING private val ul = Tables.USER_LIBRARY_SHARING

View file

@ -2,6 +2,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.Library import org.gotson.komga.domain.model.Library
import org.gotson.komga.domain.persistence.LibraryRepository import org.gotson.komga.domain.persistence.LibraryRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.LibraryRecord import org.gotson.komga.jooq.main.tables.records.LibraryRecord
import org.gotson.komga.language.toCurrentTimeZone import org.gotson.komga.language.toCurrentTimeZone
@ -17,9 +18,10 @@ import java.time.ZoneId
@Component @Component
class LibraryDao( class LibraryDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
) : LibraryRepository { ) : SplitDslDaoBase(dslRW, dslRO),
LibraryRepository {
private val l = Tables.LIBRARY private val l = Tables.LIBRARY
private val ul = Tables.USER_LIBRARY_SHARING private val ul = Tables.USER_LIBRARY_SHARING
private val le = Tables.LIBRARY_EXCLUSIONS private val le = Tables.LIBRARY_EXCLUSIONS

View file

@ -8,6 +8,7 @@ import org.gotson.komga.domain.model.MediaExtension
import org.gotson.komga.domain.model.MediaFile import org.gotson.komga.domain.model.MediaFile
import org.gotson.komga.domain.model.ProxyExtension import org.gotson.komga.domain.model.ProxyExtension
import org.gotson.komga.domain.persistence.MediaRepository import org.gotson.komga.domain.persistence.MediaRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.infrastructure.jooq.deserializeMediaExtension import org.gotson.komga.infrastructure.jooq.deserializeMediaExtension
import org.gotson.komga.infrastructure.jooq.serializeJsonGz import org.gotson.komga.infrastructure.jooq.serializeJsonGz
@ -27,11 +28,12 @@ import java.time.ZoneId
@Component @Component
class MediaDao( class MediaDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
private val mapper: ObjectMapper, private val mapper: ObjectMapper,
) : MediaRepository { ) : SplitDslDaoBase(dslRW, dslRO),
MediaRepository {
private val m = Tables.MEDIA private val m = Tables.MEDIA
private val p = Tables.MEDIA_PAGE private val p = Tables.MEDIA_PAGE
private val f = Tables.MEDIA_FILE private val f = Tables.MEDIA_FILE

View file

@ -5,6 +5,7 @@ import org.gotson.komga.domain.model.PageHashKnown
import org.gotson.komga.domain.model.PageHashMatch import org.gotson.komga.domain.model.PageHashMatch
import org.gotson.komga.domain.model.PageHashUnknown import org.gotson.komga.domain.model.PageHashUnknown
import org.gotson.komga.domain.persistence.PageHashRepository import org.gotson.komga.domain.persistence.PageHashRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.toOrderBy import org.gotson.komga.infrastructure.jooq.toOrderBy
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.PageHashRecord import org.gotson.komga.jooq.main.tables.records.PageHashRecord
@ -25,9 +26,10 @@ import java.time.ZoneId
@Component @Component
class PageHashDao( class PageHashDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
) : PageHashRepository { ) : SplitDslDaoBase(dslRW, dslRO),
PageHashRepository {
private val p = Tables.MEDIA_PAGE private val p = Tables.MEDIA_PAGE
private val b = Tables.BOOK private val b = Tables.BOOK
private val ph = Tables.PAGE_HASH private val ph = Tables.PAGE_HASH

View file

@ -4,6 +4,7 @@ import org.gotson.komga.domain.model.ContentRestrictions
import org.gotson.komga.domain.model.ReadList import org.gotson.komga.domain.model.ReadList
import org.gotson.komga.domain.persistence.ReadListRepository import org.gotson.komga.domain.persistence.ReadListRepository
import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.infrastructure.jooq.inOrNoCondition import org.gotson.komga.infrastructure.jooq.inOrNoCondition
import org.gotson.komga.infrastructure.jooq.sortByValues import org.gotson.komga.infrastructure.jooq.sortByValues
@ -32,11 +33,12 @@ import java.util.SortedMap
@Component @Component
class ReadListDao( class ReadListDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
private val luceneHelper: LuceneHelper, private val luceneHelper: LuceneHelper,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : ReadListRepository { ) : SplitDslDaoBase(dslRW, dslRO),
ReadListRepository {
private val rl = Tables.READLIST private val rl = Tables.READLIST
private val rlb = Tables.READLIST_BOOK private val rlb = Tables.READLIST_BOOK
private val b = Tables.BOOK private val b = Tables.BOOK

View file

@ -5,6 +5,7 @@ import org.gotson.komga.domain.model.ReadListRequestBookMatchBook
import org.gotson.komga.domain.model.ReadListRequestBookMatchSeries import org.gotson.komga.domain.model.ReadListRequestBookMatchSeries
import org.gotson.komga.domain.model.ReadListRequestBookMatches import org.gotson.komga.domain.model.ReadListRequestBookMatches
import org.gotson.komga.domain.persistence.ReadListRequestRepository import org.gotson.komga.domain.persistence.ReadListRequestRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.noCase import org.gotson.komga.infrastructure.jooq.noCase
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.jooq.DSLContext import org.jooq.DSLContext
@ -18,8 +19,10 @@ import java.time.LocalDate
@Component @Component
class ReadListRequestDao( class ReadListRequestDao(
@Qualifier("dslContextRO") private val dslRO: DSLContext, dslRW: DSLContext,
) : ReadListRequestRepository { @Qualifier("dslContextRO") dslRO: DSLContext,
) : SplitDslDaoBase(dslRW, dslRO),
ReadListRequestRepository {
private val sd = Tables.SERIES_METADATA private val sd = Tables.SERIES_METADATA
private val b = Tables.BOOK private val b = Tables.BOOK
private val bd = Tables.BOOK_METADATA private val bd = Tables.BOOK_METADATA

View file

@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
import org.gotson.komga.domain.model.R2Locator import org.gotson.komga.domain.model.R2Locator
import org.gotson.komga.domain.model.ReadProgress import org.gotson.komga.domain.model.ReadProgress
import org.gotson.komga.domain.persistence.ReadProgressRepository import org.gotson.komga.domain.persistence.ReadProgressRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable import org.gotson.komga.infrastructure.jooq.TempTable
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.infrastructure.jooq.deserializeJsonGz import org.gotson.komga.infrastructure.jooq.deserializeJsonGz
@ -24,11 +25,12 @@ import java.time.ZoneId
@Component @Component
class ReadProgressDao( class ReadProgressDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
private val mapper: ObjectMapper, private val mapper: ObjectMapper,
) : ReadProgressRepository { ) : SplitDslDaoBase(dslRW, dslRO),
ReadProgressRepository {
private val r = Tables.READ_PROGRESS private val r = Tables.READ_PROGRESS
private val rs = Tables.READ_PROGRESS_SERIES private val rs = Tables.READ_PROGRESS_SERIES
private val b = Tables.BOOK private val b = Tables.BOOK

View file

@ -1,5 +1,6 @@
package org.gotson.komga.infrastructure.jooq.main package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.interfaces.api.persistence.ReadProgressDtoRepository import org.gotson.komga.interfaces.api.persistence.ReadProgressDtoRepository
import org.gotson.komga.interfaces.api.rest.dto.TachiyomiReadProgressDto import org.gotson.komga.interfaces.api.rest.dto.TachiyomiReadProgressDto
import org.gotson.komga.interfaces.api.rest.dto.TachiyomiReadProgressV2Dto import org.gotson.komga.interfaces.api.rest.dto.TachiyomiReadProgressV2Dto
@ -16,8 +17,10 @@ import java.math.BigDecimal
@Component @Component
class ReadProgressDtoDao( class ReadProgressDtoDao(
@Qualifier("dslContextRO") private val dslRO: DSLContext, dslRW: DSLContext,
) : ReadProgressDtoRepository { @Qualifier("dslContextRO") dslRO: DSLContext,
) : SplitDslDaoBase(dslRW, dslRO),
ReadProgressDtoRepository {
private val rlb = Tables.READLIST_BOOK private val rlb = Tables.READLIST_BOOK
private val b = Tables.BOOK private val b = Tables.BOOK
private val d = Tables.BOOK_METADATA private val d = Tables.BOOK_METADATA

View file

@ -3,6 +3,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.Author import org.gotson.komga.domain.model.Author
import org.gotson.komga.domain.persistence.ReferentialRepository import org.gotson.komga.domain.persistence.ReferentialRepository
import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.udfStripAccents import org.gotson.komga.infrastructure.jooq.udfStripAccents
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.BookMetadataAggregationAuthorRecord import org.gotson.komga.jooq.main.tables.records.BookMetadataAggregationAuthorRecord
@ -22,8 +23,10 @@ import java.time.LocalDate
@Component @Component
class ReferentialDao( class ReferentialDao(
@Qualifier("dslContextRO") private val dslRO: DSLContext, dslRW: DSLContext,
) : ReferentialRepository { @Qualifier("dslContextRO") dslRO: DSLContext,
) : SplitDslDaoBase(dslRW, dslRO),
ReferentialRepository {
private val a = Tables.BOOK_METADATA_AUTHOR private val a = Tables.BOOK_METADATA_AUTHOR
private val sd = Tables.SERIES_METADATA private val sd = Tables.SERIES_METADATA
private val bma = Tables.BOOK_METADATA_AGGREGATION private val bma = Tables.BOOK_METADATA_AGGREGATION

View file

@ -4,6 +4,7 @@ import org.gotson.komga.domain.model.ContentRestrictions
import org.gotson.komga.domain.model.SeriesCollection import org.gotson.komga.domain.model.SeriesCollection
import org.gotson.komga.domain.persistence.SeriesCollectionRepository import org.gotson.komga.domain.persistence.SeriesCollectionRepository
import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.infrastructure.jooq.inOrNoCondition import org.gotson.komga.infrastructure.jooq.inOrNoCondition
import org.gotson.komga.infrastructure.jooq.sortByValues import org.gotson.komga.infrastructure.jooq.sortByValues
@ -31,11 +32,12 @@ import java.time.ZoneId
@Component @Component
class SeriesCollectionDao( class SeriesCollectionDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
private val luceneHelper: LuceneHelper, private val luceneHelper: LuceneHelper,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : SeriesCollectionRepository { ) : SplitDslDaoBase(dslRW, dslRO),
SeriesCollectionRepository {
private val c = Tables.COLLECTION private val c = Tables.COLLECTION
private val cs = Tables.COLLECTION_SERIES private val cs = Tables.COLLECTION_SERIES
private val s = Tables.SERIES private val s = Tables.SERIES

View file

@ -6,6 +6,7 @@ import org.gotson.komga.domain.model.Series
import org.gotson.komga.domain.persistence.SeriesRepository import org.gotson.komga.domain.persistence.SeriesRepository
import org.gotson.komga.infrastructure.jooq.RequiredJoin import org.gotson.komga.infrastructure.jooq.RequiredJoin
import org.gotson.komga.infrastructure.jooq.SeriesSearchHelper import org.gotson.komga.infrastructure.jooq.SeriesSearchHelper
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.infrastructure.jooq.csAlias import org.gotson.komga.infrastructure.jooq.csAlias
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
@ -28,10 +29,11 @@ import java.time.ZoneId
@Component @Component
class SeriesDao( class SeriesDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : SeriesRepository { ) : SplitDslDaoBase(dslRW, dslRO),
SeriesRepository {
private val s = Tables.SERIES private val s = Tables.SERIES
private val d = Tables.SERIES_METADATA private val d = Tables.SERIES_METADATA
private val rs = Tables.READ_PROGRESS_SERIES private val rs = Tables.READ_PROGRESS_SERIES

View file

@ -6,6 +6,7 @@ import org.gotson.komga.domain.model.SeriesSearch
import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource import org.gotson.komga.infrastructure.datasource.SqliteUdfDataSource
import org.gotson.komga.infrastructure.jooq.RequiredJoin import org.gotson.komga.infrastructure.jooq.RequiredJoin
import org.gotson.komga.infrastructure.jooq.SeriesSearchHelper import org.gotson.komga.infrastructure.jooq.SeriesSearchHelper
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.infrastructure.jooq.csAlias import org.gotson.komga.infrastructure.jooq.csAlias
import org.gotson.komga.infrastructure.jooq.inOrNoCondition import org.gotson.komga.infrastructure.jooq.inOrNoCondition
@ -52,10 +53,12 @@ const val BOOKS_READ_COUNT = "booksReadCount"
@Component @Component
class SeriesDtoDao( class SeriesDtoDao(
@Qualifier("dslContextRO") private val dslRO: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") dslRO: DSLContext,
private val luceneHelper: LuceneHelper, private val luceneHelper: LuceneHelper,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : SeriesDtoRepository { ) : SplitDslDaoBase(dslRW, dslRO),
SeriesDtoRepository {
private val s = Tables.SERIES private val s = Tables.SERIES
private val d = Tables.SERIES_METADATA private val d = Tables.SERIES_METADATA
private val rs = Tables.READ_PROGRESS_SERIES private val rs = Tables.READ_PROGRESS_SERIES

View file

@ -4,6 +4,7 @@ import org.gotson.komga.domain.model.AlternateTitle
import org.gotson.komga.domain.model.SeriesMetadata import org.gotson.komga.domain.model.SeriesMetadata
import org.gotson.komga.domain.model.WebLink import org.gotson.komga.domain.model.WebLink
import org.gotson.komga.domain.persistence.SeriesMetadataRepository import org.gotson.komga.domain.persistence.SeriesMetadataRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.SeriesMetadataRecord import org.gotson.komga.jooq.main.tables.records.SeriesMetadataRecord
@ -19,10 +20,11 @@ import java.time.ZoneId
@Component @Component
class SeriesMetadataDao( class SeriesMetadataDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : SeriesMetadataRepository { ) : SplitDslDaoBase(dslRW, dslRO),
SeriesMetadataRepository {
private val d = Tables.SERIES_METADATA private val d = Tables.SERIES_METADATA
private val g = Tables.SERIES_METADATA_GENRE private val g = Tables.SERIES_METADATA_GENRE
private val st = Tables.SERIES_METADATA_TAG private val st = Tables.SERIES_METADATA_TAG

View file

@ -1,5 +1,6 @@
package org.gotson.komga.infrastructure.jooq.main package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.jooq.DSLContext import org.jooq.DSLContext
import org.springframework.beans.factory.annotation.Qualifier import org.springframework.beans.factory.annotation.Qualifier
@ -7,9 +8,9 @@ import org.springframework.stereotype.Component
@Component @Component
class ServerSettingsDao( class ServerSettingsDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
) { ) : SplitDslDaoBase(dslRW, dslRO) {
private val s = Tables.SERVER_SETTINGS private val s = Tables.SERVER_SETTINGS
fun <T> getSettingByKey( fun <T> getSettingByKey(

View file

@ -3,6 +3,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.Sidecar import org.gotson.komga.domain.model.Sidecar
import org.gotson.komga.domain.model.SidecarStored import org.gotson.komga.domain.model.SidecarStored
import org.gotson.komga.domain.persistence.SidecarRepository import org.gotson.komga.domain.persistence.SidecarRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.SidecarRecord import org.gotson.komga.jooq.main.tables.records.SidecarRecord
@ -16,10 +17,11 @@ import java.net.URL
@Component @Component
class SidecarDao( class SidecarDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : SidecarRepository { ) : SplitDslDaoBase(dslRW, dslRO),
SidecarRepository {
private val sc = Tables.SIDECAR private val sc = Tables.SIDECAR
override fun findAll(): Collection<SidecarStored> = dslRO.selectFrom(sc).fetch().map { it.toDomain() } override fun findAll(): Collection<SidecarStored> = dslRO.selectFrom(sc).fetch().map { it.toDomain() }

View file

@ -8,6 +8,7 @@ import org.gotson.komga.domain.model.SyncPoint.ReadList.Companion.ON_DECK_ID
import org.gotson.komga.domain.persistence.SyncPointRepository import org.gotson.komga.domain.persistence.SyncPointRepository
import org.gotson.komga.infrastructure.jooq.BookSearchHelper import org.gotson.komga.infrastructure.jooq.BookSearchHelper
import org.gotson.komga.infrastructure.jooq.RequiredJoin import org.gotson.komga.infrastructure.jooq.RequiredJoin
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.language.toZonedDateTime import org.gotson.komga.language.toZonedDateTime
import org.jooq.DSLContext import org.jooq.DSLContext
@ -28,10 +29,11 @@ import java.time.ZoneId
@Component @Component
class SyncPointDao( class SyncPointDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
private val bookCommonDao: BookCommonDao, private val bookCommonDao: BookCommonDao,
) : SyncPointRepository { ) : SplitDslDaoBase(dslRW, dslRO),
SyncPointRepository {
private val b = Tables.BOOK private val b = Tables.BOOK
private val m = Tables.MEDIA private val m = Tables.MEDIA
private val d = Tables.BOOK_METADATA private val d = Tables.BOOK_METADATA
@ -128,7 +130,7 @@ class SyncPointDao(
.where(condition), .where(condition),
).execute() ).execute()
return dslRW.findByIdOrNull(syncPointId)!! return findByIdOrNull(syncPointId)!!
} }
@Transactional @Transactional
@ -172,10 +174,9 @@ class SyncPointDao(
} }
} }
override fun findByIdOrNull(syncPointId: String): SyncPoint? = dslRO.findByIdOrNull(syncPointId) override fun findByIdOrNull(syncPointId: String): SyncPoint? =
dslRO
private fun DSLContext.findByIdOrNull(syncPointId: String): SyncPoint? = .selectFrom(sp)
selectFrom(sp)
.where(sp.ID.eq(syncPointId)) .where(sp.ID.eq(syncPointId))
.fetchInto(sp) .fetchInto(sp)
.map { .map {

View file

@ -3,6 +3,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.Dimension import org.gotson.komga.domain.model.Dimension
import org.gotson.komga.domain.model.ThumbnailBook import org.gotson.komga.domain.model.ThumbnailBook
import org.gotson.komga.domain.persistence.ThumbnailBookRepository import org.gotson.komga.domain.persistence.ThumbnailBookRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.ThumbnailBookRecord import org.gotson.komga.jooq.main.tables.records.ThumbnailBookRecord
@ -15,10 +16,11 @@ import java.net.URL
@Component @Component
class ThumbnailBookDao( class ThumbnailBookDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : ThumbnailBookRepository { ) : SplitDslDaoBase(dslRW, dslRO),
ThumbnailBookRepository {
private val tb = Tables.THUMBNAIL_BOOK private val tb = Tables.THUMBNAIL_BOOK
override fun findAllByBookId(bookId: String): Collection<ThumbnailBook> = override fun findAllByBookId(bookId: String): Collection<ThumbnailBook> =

View file

@ -3,6 +3,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.Dimension import org.gotson.komga.domain.model.Dimension
import org.gotson.komga.domain.model.ThumbnailReadList import org.gotson.komga.domain.model.ThumbnailReadList
import org.gotson.komga.domain.persistence.ThumbnailReadListRepository import org.gotson.komga.domain.persistence.ThumbnailReadListRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.ThumbnailReadlistRecord import org.gotson.komga.jooq.main.tables.records.ThumbnailReadlistRecord
import org.jooq.DSLContext import org.jooq.DSLContext
@ -12,9 +13,10 @@ import org.springframework.transaction.annotation.Transactional
@Component @Component
class ThumbnailReadListDao( class ThumbnailReadListDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
) : ThumbnailReadListRepository { ) : SplitDslDaoBase(dslRW, dslRO),
ThumbnailReadListRepository {
private val tr = Tables.THUMBNAIL_READLIST private val tr = Tables.THUMBNAIL_READLIST
override fun findAllByReadListId(readListId: String): Collection<ThumbnailReadList> = override fun findAllByReadListId(readListId: String): Collection<ThumbnailReadList> =

View file

@ -3,6 +3,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.Dimension import org.gotson.komga.domain.model.Dimension
import org.gotson.komga.domain.model.ThumbnailSeriesCollection import org.gotson.komga.domain.model.ThumbnailSeriesCollection
import org.gotson.komga.domain.persistence.ThumbnailSeriesCollectionRepository import org.gotson.komga.domain.persistence.ThumbnailSeriesCollectionRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.ThumbnailCollectionRecord import org.gotson.komga.jooq.main.tables.records.ThumbnailCollectionRecord
import org.jooq.DSLContext import org.jooq.DSLContext
@ -12,9 +13,10 @@ import org.springframework.transaction.annotation.Transactional
@Component @Component
class ThumbnailSeriesCollectionDao( class ThumbnailSeriesCollectionDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
) : ThumbnailSeriesCollectionRepository { ) : SplitDslDaoBase(dslRW, dslRO),
ThumbnailSeriesCollectionRepository {
private val tc = Tables.THUMBNAIL_COLLECTION private val tc = Tables.THUMBNAIL_COLLECTION
override fun findByIdOrNull(thumbnailId: String): ThumbnailSeriesCollection? = override fun findByIdOrNull(thumbnailId: String): ThumbnailSeriesCollection? =

View file

@ -3,6 +3,7 @@ package org.gotson.komga.infrastructure.jooq.main
import org.gotson.komga.domain.model.Dimension import org.gotson.komga.domain.model.Dimension
import org.gotson.komga.domain.model.ThumbnailSeries import org.gotson.komga.domain.model.ThumbnailSeries
import org.gotson.komga.domain.persistence.ThumbnailSeriesRepository import org.gotson.komga.domain.persistence.ThumbnailSeriesRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable import org.gotson.komga.infrastructure.jooq.TempTable.Companion.withTempTable
import org.gotson.komga.jooq.main.Tables import org.gotson.komga.jooq.main.Tables
import org.gotson.komga.jooq.main.tables.records.ThumbnailSeriesRecord import org.gotson.komga.jooq.main.tables.records.ThumbnailSeriesRecord
@ -15,10 +16,11 @@ import java.net.URL
@Component @Component
class ThumbnailSeriesDao( class ThumbnailSeriesDao(
private val dslRW: DSLContext, dslRW: DSLContext,
@Qualifier("dslContextRO") private val dslRO: DSLContext, @Qualifier("dslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.database.batchChunkSize}") private val batchSize: Int,
) : ThumbnailSeriesRepository { ) : SplitDslDaoBase(dslRW, dslRO),
ThumbnailSeriesRepository {
private val ts = Tables.THUMBNAIL_SERIES private val ts = Tables.THUMBNAIL_SERIES
override fun findByIdOrNull(thumbnailId: String): ThumbnailSeries? = override fun findByIdOrNull(thumbnailId: String): ThumbnailSeries? =

View file

@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper
import io.github.oshai.kotlinlogging.KotlinLogging import io.github.oshai.kotlinlogging.KotlinLogging
import org.gotson.komga.application.tasks.Task import org.gotson.komga.application.tasks.Task
import org.gotson.komga.application.tasks.TasksRepository import org.gotson.komga.application.tasks.TasksRepository
import org.gotson.komga.infrastructure.jooq.SplitDslDaoBase
import org.gotson.komga.jooq.tasks.Tables import org.gotson.komga.jooq.tasks.Tables
import org.jooq.DSLContext import org.jooq.DSLContext
import org.jooq.Query import org.jooq.Query
@ -22,11 +23,12 @@ private val logger = KotlinLogging.logger {}
@Component @Component
@DependsOn("flywaySecondaryMigrationInitializer") @DependsOn("flywaySecondaryMigrationInitializer")
class TasksDao( class TasksDao(
@Qualifier("tasksDslContextRW") private val dslRW: DSLContext, @Qualifier("tasksDslContextRW") dslRW: DSLContext,
@Qualifier("tasksDslContextRO") private val dslRO: DSLContext, @Qualifier("tasksDslContextRO") dslRO: DSLContext,
@param:Value("#{@komgaProperties.tasksDb.batchChunkSize}") private val batchSize: Int, @param:Value("#{@komgaProperties.tasksDb.batchChunkSize}") private val batchSize: Int,
private val objectMapper: ObjectMapper, private val objectMapper: ObjectMapper,
) : TasksRepository { ) : SplitDslDaoBase(dslRW, dslRO),
TasksRepository {
private val t = Tables.TASK private val t = Tables.TASK
private val tasksAvailableCondition = private val tasksAvailableCondition =