feat: delete empty read lists and collections

closes #551
This commit is contained in:
Gauthier Roebroeck 2021-06-08 10:53:29 +08:00
parent c8b522d7e9
commit 159c767929
7 changed files with 48 additions and 0 deletions

View file

@ -37,5 +37,6 @@ interface ReadListRepository {
fun delete(readListId: String)
fun deleteAll()
fun deleteEmpty()
fun existsByName(name: String): Boolean
}

View file

@ -37,5 +37,6 @@ interface SeriesCollectionRepository {
fun delete(collectionId: String)
fun deleteAll()
fun deleteEmpty()
fun existsByName(name: String): Boolean
}

View file

@ -6,7 +6,10 @@ import org.gotson.komga.domain.model.Library
import org.gotson.komga.domain.model.Media
import org.gotson.komga.domain.persistence.BookRepository
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.infrastructure.configuration.KomgaProperties
import org.springframework.stereotype.Service
import java.nio.file.Paths
import java.time.temporal.ChronoUnit
@ -22,6 +25,9 @@ class LibraryContentLifecycle(
private val bookLifecycle: BookLifecycle,
private val mediaRepository: MediaRepository,
private val seriesLifecycle: SeriesLifecycle,
private val collectionRepository: SeriesCollectionRepository,
private val readListRepository: ReadListRepository,
private val komgaProperties: KomgaProperties,
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" } }
}
}

View file

@ -16,6 +16,10 @@ class KomgaProperties {
var librariesScanDirectoryExclusions: List<String> = emptyList()
var deleteEmptyReadLists: Boolean = true
var deleteEmptyCollections: Boolean = true
var rememberMe = RememberMe()
var nativeWebp: Boolean = true

View file

@ -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 =
dsl.fetchExists(
dsl.selectFrom(rl)

View file

@ -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 =
dsl.fetchExists(
dsl.selectFrom(c)

View file

@ -9,6 +9,8 @@ komga:
file: ":memory:"
cors.allowed-origins:
- http://localhost:8081
# delete-empty-collections: true
# delete-empty-read-lists: true
spring:
artemis:
embedded: