Skip to content

Commit 4a9ea89

Browse files
committed
FEATURE : complete film delete function(cascade delete) #4
1 parent efe97de commit 4a9ea89

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

src/main/kotlin/eom/improve/kafkaboot/service/FilmService.kt

+17-9
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
package eom.improve.kafkaboot.service
22

33
import eom.improve.kafkaboot.model.FilmEntity
4-
import eom.improve.kafkaboot.repository.FilmRepository
5-
import eom.improve.kafkaboot.repository.InventoryRepository
6-
import eom.improve.kafkaboot.repository.PaymentRepository
7-
import eom.improve.kafkaboot.repository.RentalRepository
4+
import eom.improve.kafkaboot.repository.*
85
import org.springframework.stereotype.Service
9-
import org.springframework.transaction.annotation.Transactional
106
import reactor.core.publisher.Flux
117
import reactor.core.publisher.Mono
128
import reactor.kotlin.core.publisher.toMono
@@ -17,7 +13,9 @@ class FilmService(
1713
private val filmRepository : FilmRepository,
1814
private val paymentRepository : PaymentRepository,
1915
private val inventoryRepository : InventoryRepository,
20-
private val rentalRepository : RentalRepository
16+
private val rentalRepository : RentalRepository,
17+
private val filmActorRepository: FilmActorRepository,
18+
private val filmCategoryRepository: FilmCategoryRepository
2119
) {
2220
fun findAll() : Flux<FilmEntity> = filmRepository.findAllBy()
2321

@@ -31,7 +29,6 @@ class FilmService(
3129
return filmRepository.save(toBeSavedFilm);
3230
}
3331

34-
@Transactional
3532
fun deleteFilm(filmId : Int) : Mono<Void> {
3633
// need to implement cascade delete(maybe soft) for table data that set foreign key
3734
return filmRepository.findById(filmId)
@@ -52,13 +49,24 @@ class FilmService(
5249
}.then(inventoryEn.toMono())
5350
}
5451
.flatMap { inventoryEn ->
55-
println(inventoryEn.inventoryId)
5652
inventoryRepository.deleteByInventoryId(inventoryEn.inventoryId)
5753
}
5854
.then(filmEn.toMono())
5955
}
6056
.flatMap { filmEn ->
61-
filmRepository.deleteByFilmId(filmEn.filmId)
57+
Mono.zip(
58+
filmActorRepository.findAllByFilmId(filmEn.filmId)
59+
.flatMap { filmActorRepository.deleteByFilmId(it.filmId) }
60+
.then()
61+
,
62+
filmCategoryRepository.findAllByFilmId(filmEn.filmId)
63+
.flatMap { filmCategoryRepository.deleteByFilmId(it.filmId) }
64+
.then()
65+
)
66+
.then(filmEn.toMono())
67+
}
68+
.flatMap {
69+
filmRepository.deleteByFilmId(it.filmId)
6270
}
6371
}
6472
}

0 commit comments

Comments
 (0)