mirror of
https://github.com/gotson/komga.git
synced 2026-05-08 12:35:30 +02:00
parent
c8b522d7e9
commit
159c767929
7 changed files with 48 additions and 0 deletions
|
|
@ -37,5 +37,6 @@ interface ReadListRepository {
|
||||||
fun delete(readListId: String)
|
fun delete(readListId: String)
|
||||||
|
|
||||||
fun deleteAll()
|
fun deleteAll()
|
||||||
|
fun deleteEmpty()
|
||||||
fun existsByName(name: String): Boolean
|
fun existsByName(name: String): Boolean
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -37,5 +37,6 @@ interface SeriesCollectionRepository {
|
||||||
fun delete(collectionId: String)
|
fun delete(collectionId: String)
|
||||||
|
|
||||||
fun deleteAll()
|
fun deleteAll()
|
||||||
|
fun deleteEmpty()
|
||||||
fun existsByName(name: String): Boolean
|
fun existsByName(name: String): Boolean
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,10 @@ import org.gotson.komga.domain.model.Library
|
||||||
import org.gotson.komga.domain.model.Media
|
import org.gotson.komga.domain.model.Media
|
||||||
import org.gotson.komga.domain.persistence.BookRepository
|
import org.gotson.komga.domain.persistence.BookRepository
|
||||||
import org.gotson.komga.domain.persistence.MediaRepository
|
import org.gotson.komga.domain.persistence.MediaRepository
|
||||||
|
import org.gotson.komga.domain.persistence.ReadListRepository
|
||||||
|
import org.gotson.komga.domain.persistence.SeriesCollectionRepository
|
||||||
import org.gotson.komga.domain.persistence.SeriesRepository
|
import org.gotson.komga.domain.persistence.SeriesRepository
|
||||||
|
import org.gotson.komga.infrastructure.configuration.KomgaProperties
|
||||||
import org.springframework.stereotype.Service
|
import org.springframework.stereotype.Service
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
import java.time.temporal.ChronoUnit
|
import java.time.temporal.ChronoUnit
|
||||||
|
|
@ -22,6 +25,9 @@ class LibraryContentLifecycle(
|
||||||
private val bookLifecycle: BookLifecycle,
|
private val bookLifecycle: BookLifecycle,
|
||||||
private val mediaRepository: MediaRepository,
|
private val mediaRepository: MediaRepository,
|
||||||
private val seriesLifecycle: SeriesLifecycle,
|
private val seriesLifecycle: SeriesLifecycle,
|
||||||
|
private val collectionRepository: SeriesCollectionRepository,
|
||||||
|
private val readListRepository: ReadListRepository,
|
||||||
|
private val komgaProperties: KomgaProperties,
|
||||||
private val taskReceiver: TaskReceiver,
|
private val taskReceiver: TaskReceiver,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
|
@ -116,6 +122,16 @@ class LibraryContentLifecycle(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (komgaProperties.deleteEmptyCollections) {
|
||||||
|
logger.info { "Deleting empty collections" }
|
||||||
|
collectionRepository.deleteEmpty()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (komgaProperties.deleteEmptyReadLists) {
|
||||||
|
logger.info { "Deleting empty read lists" }
|
||||||
|
readListRepository.deleteEmpty()
|
||||||
|
}
|
||||||
}.also { logger.info { "Library updated in $it" } }
|
}.also { logger.info { "Library updated in $it" } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,10 @@ class KomgaProperties {
|
||||||
|
|
||||||
var librariesScanDirectoryExclusions: List<String> = emptyList()
|
var librariesScanDirectoryExclusions: List<String> = emptyList()
|
||||||
|
|
||||||
|
var deleteEmptyReadLists: Boolean = true
|
||||||
|
|
||||||
|
var deleteEmptyCollections: Boolean = true
|
||||||
|
|
||||||
var rememberMe = RememberMe()
|
var rememberMe = RememberMe()
|
||||||
|
|
||||||
var nativeWebp: Boolean = true
|
var nativeWebp: Boolean = true
|
||||||
|
|
|
||||||
|
|
@ -209,6 +209,18 @@ class ReadListDao(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun deleteEmpty() {
|
||||||
|
dsl.deleteFrom(rl)
|
||||||
|
.where(
|
||||||
|
rl.ID.`in`(
|
||||||
|
dsl.select(rl.ID)
|
||||||
|
.from(rl)
|
||||||
|
.leftJoin(rlb).on(rl.ID.eq(rlb.READLIST_ID))
|
||||||
|
.where(rlb.READLIST_ID.isNull)
|
||||||
|
)
|
||||||
|
).execute()
|
||||||
|
}
|
||||||
|
|
||||||
override fun existsByName(name: String): Boolean =
|
override fun existsByName(name: String): Boolean =
|
||||||
dsl.fetchExists(
|
dsl.fetchExists(
|
||||||
dsl.selectFrom(rl)
|
dsl.selectFrom(rl)
|
||||||
|
|
|
||||||
|
|
@ -209,6 +209,18 @@ class SeriesCollectionDao(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun deleteEmpty() {
|
||||||
|
dsl.deleteFrom(c)
|
||||||
|
.where(
|
||||||
|
c.ID.`in`(
|
||||||
|
dsl.select(c.ID)
|
||||||
|
.from(c)
|
||||||
|
.leftJoin(cs).on(c.ID.eq(cs.COLLECTION_ID))
|
||||||
|
.where(cs.COLLECTION_ID.isNull)
|
||||||
|
)
|
||||||
|
).execute()
|
||||||
|
}
|
||||||
|
|
||||||
override fun existsByName(name: String): Boolean =
|
override fun existsByName(name: String): Boolean =
|
||||||
dsl.fetchExists(
|
dsl.fetchExists(
|
||||||
dsl.selectFrom(c)
|
dsl.selectFrom(c)
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ komga:
|
||||||
file: ":memory:"
|
file: ":memory:"
|
||||||
cors.allowed-origins:
|
cors.allowed-origins:
|
||||||
- http://localhost:8081
|
- http://localhost:8081
|
||||||
|
# delete-empty-collections: true
|
||||||
|
# delete-empty-read-lists: true
|
||||||
spring:
|
spring:
|
||||||
artemis:
|
artemis:
|
||||||
embedded:
|
embedded:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue