package Ġmob i . water dog . rest . template . tests . core . http handler Ċ Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . request . path Ċ import Ġio . ktor . request . receive Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing . Route Ċ import Ġio . ktor . routing . get Ċ import Ġio . ktor . routing . post Ċ import Ġio . ktor . routing . put Ċ import Ġmob i . water dog . rest . template . pagination . Page Response Ċ import Ġmob i . water dog . rest . template . pagination . parse Page Request Ċ import Ġmob i . water dog . rest . template . tests . core . model . Car Ċ import Ġmob i . water dog . rest . template . tests . core . model . Car Save Command Ċ import Ġmob i . water dog . rest . template . tests . core . service . Car Service Ċ import Ġmob i . water dog . rest . template . tests . core . service . Person Service Ċ import Ġmob i . water dog . rest . template . tests . core . utils . pagination . respond Paged Ċ import Ġmob i . water dog . rest . template . tests . core . utils . version ing . ApiVersion Ċ import Ġorg . k oin . core . component . K oin Component Ċ import Ġorg . k oin . core . component . inject Ċ Ċ internal Ġclass ĠDefault Routes Injector Ġ: ĠK oin Component Ġ{ ĊĠĠĠ Ġval Ġcar Service : ĠCar Service Ġby Ġinject () ĊĠĠĠ Ġval Ġperson Service : ĠPerson Service Ġby Ġinject () Ċ } Ċ Ċ fun ĠRoute . default Routes () Ġ{ ĊĠĠĠ Ġval ĠapiVersion Ġ= ĠApi Version . Latest ĊĠĠĠ Ġval Ġinjector Ġ= ĠDefault Routes Injector () ĊĠĠĠ Ġval Ġcar Service Ġ= Ġinjector . car Service ĊĠĠĠ Ġval Ġperson Service Ġ= Ġinjector . person Service ĊĊĠĠĠ Ġget ("/ $ apiVersion / cars ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Request Ġ= Ġcall . parse Page Request () ĊĠĠĠĠĠĠĠ Ġval Ġtotal Elements Ġ= Ġcar Service . count ( page Request ) ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġcar Service . list ( page Request ) ĊĠĠĠĠĠĠĠ Ġcall . respond Paged ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Response . from ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Request Ġ= Ġpage Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Elements Ġ= Ġtotal Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġcall . request . path () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġget ("/ $ apiVersion / cars /{ id }") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcar Id Ġ= Ġcall . parameters [" id "] ?. to Long () Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġcar Ġ= Ġcar Service . get Car ById ( car Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġcall . respond ( HttpStatusCode . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġcall . respond ( car ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpost ("/ $ apiVersion / cars ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Car Ġ= Ġcall . receive < Car Save Command >() ĊĠĠĠĠĠĠĠ Ġnew Car . validate () ĊĊĠĠĠĠĠĠĠ Ġval Ġinserted Car Ġ= Ġcar Service . insert New Car ( Car Save Command ( new Car . brand , Ġnew Car . model )) ĊĠĠĠĠĠĠĠ Ġcall . respond ( inserted Car ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġput ("/ $ apiVersion / cars /{ id }") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcar Ġ= Ġcall . receive < Car Save Command >() ĊĠĠĠĠĠĠĠ Ġcar . validate () ĊĠĠĠĠĠĠĠ Ġval Ġcar Id Ġ= Ġcall . parameters [" id "] ?. to Long () Ġ?: Ġ- 1 ĊĠĠĠĠĠĠĠ Ġval Ġcar ToUpdate Ġ= ĠCar ( car Id , Ġcar . brand , Ġcar . model , Ġcar . wheel s ) ĊĊĠĠĠĠĠĠĠ Ġval Ġupdated Car Ġ= Ġcar Service . update Car ( car ToUpdate ) ĊĠĠĠĠĠĠĠ Ġcall . respond ( updated Car ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġget ("/ $ apiVersion / persons ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Request Ġ= Ġcall . parse Page Request () ĊĠĠĠĠĠĠĠ Ġval Ġtotal Elements Ġ= Ġperson Service . count ( page Request ) ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġperson Service . list ( page Request ) ĊĠĠĠĠĠĠĠ Ġcall . respond ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPage Response . from ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Request Ġ= Ġpage Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Elements Ġ= Ġtotal Elements , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġcall . request . path () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ