package Ġkr . co . has ys . spring r 2 dbc study . shop Ċ Ċ import Ġorg . springframework . http . HttpStatus Ċ import Ġorg . springframework . web . bind . annotation .* Ċ import Ġreactor . core . publisher . Flux Ċ import Ġreactor . core . publisher . Mono Ċ import Ġreactor . kotlin . core . publisher . switch If Empty Ċ Ċ /** Ċ Ġ* ĠR 2 dbc Repository Ċ Ġ*/ Ċ @ RestController Ċ class ĠShop Controller V 3 ( val Ġshop Repository : ĠShop Repository ) Ġ{ ĊĊĠĠĠ Ġ@ GetMapping ("/ v 3 / shops ") ĊĠĠĠ Ġfun Ġgets (): ĠFlux < Shop Response > Ġ= Ġshop Repository . findAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠShop Response ( it . id Ġ?: Ġ"", Ġit . name ) Ġ} ĊĊĠĠĠ Ġ@ GetMapping ("/ v 3 / shops /{ id }") ĊĠĠĠ Ġfun Ġget (@ PathVariable Ġid : ĠString ): ĠMono < Shop Response > Ġ= Ġshop Repository . findById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch If Empty Ġ{ Ġthrow ĠShop NotFoundException () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShop Response ( it . id Ġ?: Ġ"", Ġit . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ PostMapping ("/ v 3 / shops ") ĊĠĠĠ Ġ@ ResponseStatus ( HttpStatus . CREATED ) ĊĠĠĠ Ġfun Ġpost (@ RequestBody Ġrequest : ĠShop Request ): ĠMono < Shop Response > Ġ= Ġshop Repository . save ( Shop ( request . name )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠShop Response ( it . id !! , Ġit . name ) Ġ} ĊĊĠĠĠ Ġ@ Put Mapping ("/ v 3 / shops /{ id }") ĊĠĠĠ Ġfun Ġput (@ RequestBody Ġrequest : ĠShop Request , Ġ@ PathVariable Ġid : ĠString ) Ġ= Ġshop Repository . findById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch If Empty Ġ{ Ġthrow ĠShop NotFoundException () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name Ġ= Ġrequest . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshop Repository . save ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Delete Mapping ("/ v 3 / shops /{ id }") ĊĠĠĠ Ġfun Ġdelete (@ PathVariable Ġid : ĠString ) Ġ= Ġshop Repository . delete ById ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Map Ġ{ ĠShop Has St y ler Exception () Ġ} Ċ Ċ }