Skip to content

Commit 428706f

Browse files
committed
FEATURE: Film delete API added #4
1 parent b6a81c9 commit 428706f

File tree

4 files changed

+18
-1
lines changed

4 files changed

+18
-1
lines changed

src/main/kotlin/eom/improve/kafkaboot/controller/FilmController.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,7 @@ interface FilmController {
1717

1818
@PostMapping("/save")
1919
fun saveFilm(@Valid @RequestBody toBeSavedFilm : Film) : Mono<Film>
20+
21+
@DeleteMapping("/delete/{filmId}")
22+
fun deleteFilm(@PathVariable filmId : Int) : Mono<Void>
2023
}

src/main/kotlin/eom/improve/kafkaboot/controller/GlobalExceptionHandler.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import org.springframework.web.bind.annotation.ResponseBody
88
import org.springframework.web.bind.annotation.RestControllerAdvice
99
import org.springframework.web.bind.support.WebExchangeBindException
1010
import org.springframework.web.server.ServerWebExchange
11-
import reactor.core.publisher.Flux
1211
import reactor.core.publisher.Mono
1312
import reactor.kotlin.core.publisher.toMono
1413
import java.util.stream.Collectors
@@ -32,4 +31,7 @@ class GlobalExceptionHandler {
3231
).toMono()
3332
}
3433
// need to implement error logging publish to kafka
34+
// detail message = WebExchangeBindException.message
35+
36+
3537
}

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,8 @@ class FilmControllerImpl(
2626
.flatMap { toBeSavedFilm.toMono() }
2727
}
2828

29+
override fun deleteFilm(filmId : Int) : Mono<Void> {
30+
return filmService.deleteFilm(filmId)
31+
}
32+
2933
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,12 @@ class FilmService(
2222
fun saveFilm(toBeSavedFilm : FilmEntity) : Mono<FilmEntity> {
2323
return filmRepository.save(toBeSavedFilm);
2424
}
25+
26+
fun deleteFilm(filmId : Int) : Mono<Void> {
27+
// need to implement cascade delete for table data that set foreign key
28+
return filmRepository.findById(filmId)
29+
.switchIfEmpty(Mono.error(RuntimeException("Not registered film")))
30+
.flatMap { filmRepository.deleteById(filmId) }
31+
.then()
32+
}
2533
}

0 commit comments

Comments
 (0)