package Ġdev . m ichael k aser er . demo . user . domain Ċ Ċ import Ġdev . m ichael k aser er . demo . user . db . User Entity Ċ import Ġdev . m ichael k aser er . demo . user . db . UserRepository Ċ import Ġdev . m ichael k aser er . demo . user . rest . Create UserRequest Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . util .* Ċ Ċ @ Service Ċ class ĠUserService ( ĊĠĠĠ Ġprivate Ġval Ġuser Repository : ĠUser Repository Ċ ) Ġ{ ĊĠĠĠ Ġsuspend Ġfun ĠgetBy ApiKey ( apiKey : ĠString ) Ġ= Ġuser Repository . findBy ApiKey ( apiKey ) ĊĊĠĠĠ Ġsuspend Ġfun Ġcreate ( user : ĠCreate UserRequest ): ĠCreate User Outcome Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( user Repository . exists By Email ( user . email )) Ġreturn ĠCreate User Outcome . Already Existing ĊĠĠĠĠĠĠĠ Ġval Ġcreated User Ġ= Ġuser Repository . save ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Entity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġuser . email , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠapiKey Ġ= Ġgenerate ApiKey (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠSend Ġemail Ġwith Ġapi Ġkey Ġto Ġuser ĊĠĠĠĠĠĠĠ Ġreturn ĠCreate User Outcome . Success ( created User ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġgenerate ApiKey () Ġ= ĠUUID . randomUUID (). toString (). replace ("- ", Ġ"") ĊĠĠĠ Ġ} Ċ }