package Ġcom . mart in . controller Ċ Ċ import Ġcom . mart in . model . User Ċ import Ġcom . mart in . service . UserService Ċ import Ġio . ktor . application . Application Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . request . receive Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing .* Ċ import Ġorg . kode in . di . K ode in Ċ import Ġorg . kode in . di . K ode in Aware Ċ import Ġorg . kode in . di . generic . instance Ċ Ċ class ĠUser Controller ( override Ġval Ġk ode in : ĠK ode in ) Ġ: ĠK ode in Aware Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġapp : ĠApplication Ġby Ġinstance () ĊĠĠĠ Ġprivate Ġval Ġservice : ĠUserService Ġby Ġinstance (" userService ") ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġapp . routing Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/ users /{ id ? }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcall . parameters [" id "] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġcall . respond ( service . findAll ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġservice . findById ( id )?. let Ġ{ Ġcall . respond ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost ("/ users ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġcall . receive < User >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . save ( user )?. let Ġ{ Ġcall . respond ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpatch ("/ users /{ id }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcall . parameters [" id "] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġcall . receive < User >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . update ( id !! , Ġuser )?. let Ġ{ Ġcall . respond ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete ("/ users /{ id }") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcall . parameters [" id "] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . delete ( id !! )?. let Ġ{ Ġcall . respond ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }