package Ġio . jav al in . example . kotlin . user Ċ Ċ import Ġio . jav al in . example . kotlin . ErrorResponse Ċ import Ġio . jav al in . http . Context Ċ import Ġio . jav al in . http . NotFound Response Ċ import Ġio . jav al in . plugin . openapi . annotations .* Ċ Ċ // ĠThis Ġis Ġa Ġcontroller , Ġit Ġshould Ġcontain Ġlogic Ġrelated Ġto Ġclient / server ĠIO Ċ object ĠUser Controller Ġ{ ĊĊĠĠĠ Ġ@ Open Api ( ĊĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ" Create Ġuser ", ĊĠĠĠĠĠĠĠ Ġoperation Id Ġ= Ġ" createUser ", ĊĠĠĠĠĠĠĠ Ġtags Ġ= Ġ[" User "], ĊĠĠĠĠĠĠĠ Ġrequest Body Ġ= ĠOpen Api RequestBody ([ Open Api Content ( New UserRequest :: class )]), ĊĠĠĠĠĠĠĠ Ġresponses Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 2 0 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 0 ", Ġ[ Open Api Content ( ErrorResponse :: class )]) ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġcreate ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġctx . body As Class < New UserRequest >() ĊĠĠĠĠĠĠĠ ĠUserService . save ( name Ġ= Ġuser . name , Ġemail Ġ= Ġuser . email ) ĊĠĠĠĠĠĠĠ Ġctx . status ( 2 0 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Open Api ( ĊĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ" Get Ġall Ġusers ", ĊĠĠĠĠĠĠĠ Ġoperation Id Ġ= Ġ" getAll Users ", ĊĠĠĠĠĠĠĠ Ġtags Ġ= Ġ[" User "], ĊĠĠĠĠĠĠĠ Ġresponses Ġ= Ġ[ Open ApiResponse (" 2 0 0 ", Ġ[ Open Api Content ( Array < User >:: class )]) ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun ĠgetAll ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġctx . json ( UserService . getAll ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Open Api ( ĊĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ" Get Ġuser Ġby ĠID ", ĊĠĠĠĠĠĠĠ Ġoperation Id Ġ= Ġ" getUser ById ", ĊĠĠĠĠĠĠĠ Ġtags Ġ= Ġ[" User "], ĊĠĠĠĠĠĠĠ ĠpathParams Ġ= Ġ[ Open Api Param (" userId ", ĠInt :: class , Ġ" The Ġuser ĠID ") ], ĊĠĠĠĠĠĠĠ Ġresponses Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 2 0 0 ", Ġ[ Open Api Content ( User :: class )]), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 0 ", Ġ[ Open Api Content ( ErrorResponse :: class )]), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 4 ", Ġ[ Open Api Content ( ErrorResponse :: class )]) ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġget One ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġctx . json ( UserService . findById ( ctx . valid Path Param UserId ()) Ġ?: Ġthrow ĠNotFound Response (" User Ġnot Ġfound ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Open Api ( ĊĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ" Update Ġuser Ġby ĠID ", ĊĠĠĠĠĠĠĠ Ġoperation Id Ġ= Ġ" update User ById ", ĊĠĠĠĠĠĠĠ Ġtags Ġ= Ġ[" User "], ĊĠĠĠĠĠĠĠ ĠpathParams Ġ= Ġ[ Open Api Param (" userId ", ĠInt :: class , Ġ" The Ġuser ĠID ") ], ĊĠĠĠĠĠĠĠ Ġrequest Body Ġ= ĠOpen Api RequestBody ([ Open Api Content ( New UserRequest :: class )]), ĊĠĠĠĠĠĠĠ Ġresponses Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 2 0 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 0 ", Ġ[ Open Api Content ( ErrorResponse :: class )]), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 4 ", Ġ[ Open Api Content ( ErrorResponse :: class )]) ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġupdate ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUserService . findById ( ctx . valid Path Param UserId ()) Ġ?: Ġthrow ĠNotFound Response (" User Ġnot Ġfound ") ĊĠĠĠĠĠĠĠ Ġval Ġnew User Ġ= Ġctx . body As Class < New UserRequest >() ĊĠĠĠĠĠĠĠ ĠUserService . update ( id Ġ= Ġuser . id , Ġname Ġ= Ġnew User . name , Ġemail Ġ= Ġnew User . email ) ĊĠĠĠĠĠĠĠ Ġctx . status ( 2 0 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Open Api ( ĊĠĠĠĠĠĠĠ Ġsummary Ġ= Ġ" Delete Ġuser Ġby ĠID ", ĊĠĠĠĠĠĠĠ Ġoperation Id Ġ= Ġ" delete User ById ", ĊĠĠĠĠĠĠĠ Ġtags Ġ= Ġ[" User "], ĊĠĠĠĠĠĠĠ ĠpathParams Ġ= Ġ[ Open Api Param (" userId ", ĠInt :: class , Ġ" The Ġuser ĠID ") ], ĊĠĠĠĠĠĠĠ Ġresponses Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 2 0 4 "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 0 ", Ġ[ Open Api Content ( ErrorResponse :: class )]), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOpen ApiResponse (" 4 0 4 ", Ġ[ Open Api Content ( ErrorResponse :: class )]) ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġdelete ( ctx : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUserService . findById ( ctx . valid Path Param UserId ()) Ġ?: Ġthrow ĠNotFound Response (" User Ġnot Ġfound ") ĊĠĠĠĠĠĠĠ ĠUserService . delete ( user . id ) ĊĠĠĠĠĠĠĠ Ġctx . status ( 2 0 4 ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ // ĠPrevent Ġduplicate Ġvalidation Ġof ĠuserId Ċ private Ġfun ĠContext . valid Path Param UserId () Ġ= Ġthis . path Param As Class < Int >(" userId ") ĊĠĠĠ Ġ. check ({ Ġit Ġ>= Ġ 0 Ġ}, Ġ" ID Ġmust Ġbe Ġgreater Ġthan Ġ 0 "). get () Ċ