diff --git a/komga/src/flyway/resources/db/migration/sqlite/V20210617114814__sidecar_cleanup.sql b/komga/src/flyway/resources/db/migration/sqlite/V20210617114814__sidecar_cleanup.sql new file mode 100644 index 000000000..254e7418a --- /dev/null +++ b/komga/src/flyway/resources/db/migration/sqlite/V20210617114814__sidecar_cleanup.sql @@ -0,0 +1,6 @@ +DELETE +FROM SIDECAR +WHERE LIBRARY_ID NOT IN ( + SELECT ID + FROM LIBRARY + ) diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/persistence/SidecarRepository.kt b/komga/src/main/kotlin/org/gotson/komga/domain/persistence/SidecarRepository.kt index b104c073f..1e4016462 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/persistence/SidecarRepository.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/persistence/SidecarRepository.kt @@ -10,4 +10,5 @@ interface SidecarRepository { fun save(libraryId: String, sidecar: Sidecar) fun deleteByLibraryIdAndUrls(libraryId: String, urls: Collection) + fun deleteByLibraryId(libraryId: String) } diff --git a/komga/src/main/kotlin/org/gotson/komga/domain/service/LibraryLifecycle.kt b/komga/src/main/kotlin/org/gotson/komga/domain/service/LibraryLifecycle.kt index 6ff93336b..e171620b5 100644 --- a/komga/src/main/kotlin/org/gotson/komga/domain/service/LibraryLifecycle.kt +++ b/komga/src/main/kotlin/org/gotson/komga/domain/service/LibraryLifecycle.kt @@ -8,6 +8,7 @@ import org.gotson.komga.domain.model.Library import org.gotson.komga.domain.model.PathContainedInPath import org.gotson.komga.domain.persistence.LibraryRepository import org.gotson.komga.domain.persistence.SeriesRepository +import org.gotson.komga.domain.persistence.SidecarRepository import org.springframework.stereotype.Service import java.io.FileNotFoundException import java.nio.file.Files @@ -19,6 +20,7 @@ class LibraryLifecycle( private val libraryRepository: LibraryRepository, private val seriesLifecycle: SeriesLifecycle, private val seriesRepository: SeriesRepository, + private val sidecarRepository: SidecarRepository, private val taskReceiver: TaskReceiver ) { @@ -73,6 +75,7 @@ class LibraryLifecycle( val seriesIds = seriesRepository.findAllByLibraryId(library.id).map { it.id } seriesLifecycle.deleteMany(seriesIds) + sidecarRepository.deleteByLibraryId(library.id) libraryRepository.delete(library.id) } diff --git a/komga/src/main/kotlin/org/gotson/komga/infrastructure/jooq/SidecarDao.kt b/komga/src/main/kotlin/org/gotson/komga/infrastructure/jooq/SidecarDao.kt index da3d807ba..96339f191 100644 --- a/komga/src/main/kotlin/org/gotson/komga/infrastructure/jooq/SidecarDao.kt +++ b/komga/src/main/kotlin/org/gotson/komga/infrastructure/jooq/SidecarDao.kt @@ -41,6 +41,12 @@ class SidecarDao( .execute() } + override fun deleteByLibraryId(libraryId: String) { + dsl.deleteFrom(sc) + .where(sc.LIBRARY_ID.eq(libraryId)) + .execute() + } + private fun SidecarRecord.toDomain() = SidecarStored( url = URL(url),