package Ġcom . david . todo . api . service . impl Ċ Ċ import Ġcom . david . todo . api . model . repository . Todo Repository Ċ import Ġcom . david . todo . api . service . Todo Service Ċ import Ġcom . david . todo . api . service . dto . Todo DTO Ċ import Ġcom . david . todo . exception . Resource NotFoundException Ċ import Ġcom . david . todo . helper . logger Ċ import Ġcom . david . todo . translator . DT OT OT odo Ċ import Ġcom . david . todo . translator . Todo TO DTO Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġreactor . core . publisher . Flux Ċ import Ġreactor . core . publisher . Mono Ċ Ċ @ Service Ċ class ĠTodo ServiceImpl ( ĊĠĠĠ Ġval Ġrepository : ĠTodo Repository , ĊĠĠĠ Ġval Ġtranslator To DTO : ĠTodo TO DTO , ĊĠĠĠ Ġval Ġtranslator To Todo : ĠD TOT OT odo Ċ ) Ġ: ĠTodo Service Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠLOG Ġby Ġlogger () ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTODO _ ITEM _ NOT _ FOUND Ġ= Ġ" Todo Ġitem Ġnot Ġfound !" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠfindAll (): ĠFlux < Todo DTO > Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" == ĠCalling ĠDAO Ġto Ġfind Ġall Ġtodos Ġ= =") ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . findAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġt Ġ-> Ġtranslator To DTO . translate ( t ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind ById ( id : ĠLong ): ĠMono < Todo DTO > Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" == ĠCalling ĠDAO Ġto Ġfind Ġtodo Ġby Ġid = [$ id ] Ġ= =") ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . findById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch If Empty ( Mono . error ( Resource NotFoundException ( TODO _ ITEM _ NOT _ FOUND ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġt Ġ-> Ġtranslator To DTO . translate ( t ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( todo : ĠTodo DTO ): ĠMono < Todo DTO > Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" == ĠCalling ĠDAO Ġto Ġsave Ġtodo = [$ todo ] Ġ= =") ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . save ( translator To Todo . translate ( todo )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġt Ġ-> Ġtranslator To DTO . translate ( t ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( id : ĠLong , Ġtodo : ĠTodo DTO ): ĠMono < Todo DTO > Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" == ĠCalling ĠDAO Ġto Ġupdate Ġtodo Ġby Ġid = [$ id ], Ġtodo = [$ todo ] Ġ= =") ĊĠĠĠĠĠĠĠ Ġreturn Ġfind ById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġt Ġ-> ĠMono . just ( translator To Todo . translate ( t )) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġt Ġ-> Ġt . item Ġ= Ġtodo . item ; Ġrepository . save ( t ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġt Ġ-> Ġtranslator To DTO . translate ( t ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete ( id : ĠLong ): ĠMono < Void > Ġ{ ĊĠĠĠĠĠĠĠ ĠLOG . info (" == ĠCalling ĠDAO Ġto Ġdelete Ġtodo Ġby Ġid = [$ id ] Ġ= =") ĊĠĠĠĠĠĠĠ Ġreturn Ġfind ById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġt Ġ-> Ġrepository . delete ById ( t . id !! ) Ġ} ĊĠĠĠ Ġ} Ċ }