1
1
package eom.improve.kafkaboot.service
2
2
3
3
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.*
8
5
import org.springframework.stereotype.Service
9
- import org.springframework.transaction.annotation.Transactional
10
6
import reactor.core.publisher.Flux
11
7
import reactor.core.publisher.Mono
12
8
import reactor.kotlin.core.publisher.toMono
@@ -17,7 +13,9 @@ class FilmService(
17
13
private val filmRepository : FilmRepository ,
18
14
private val paymentRepository : PaymentRepository ,
19
15
private val inventoryRepository : InventoryRepository ,
20
- private val rentalRepository : RentalRepository
16
+ private val rentalRepository : RentalRepository ,
17
+ private val filmActorRepository : FilmActorRepository ,
18
+ private val filmCategoryRepository : FilmCategoryRepository
21
19
) {
22
20
fun findAll () : Flux <FilmEntity > = filmRepository.findAllBy()
23
21
@@ -31,7 +29,6 @@ class FilmService(
31
29
return filmRepository.save(toBeSavedFilm);
32
30
}
33
31
34
- @Transactional
35
32
fun deleteFilm (filmId : Int ) : Mono <Void > {
36
33
// need to implement cascade delete(maybe soft) for table data that set foreign key
37
34
return filmRepository.findById(filmId)
@@ -52,13 +49,24 @@ class FilmService(
52
49
}.then(inventoryEn.toMono())
53
50
}
54
51
.flatMap { inventoryEn ->
55
- println (inventoryEn.inventoryId)
56
52
inventoryRepository.deleteByInventoryId(inventoryEn.inventoryId)
57
53
}
58
54
.then(filmEn.toMono())
59
55
}
60
56
.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)
62
70
}
63
71
}
64
72
}
0 commit comments