package Ġnet . tim afe . ang kor . domain Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json Format Ċ import Ġnet . tim afe . ang kor . config . Constants Ċ import Ġorg . hibernate . annotations . Type Ċ import Ġorg . hibernate . annotations . TypeDef Ċ import Ġjava . time . Z onedDateTime Ċ import Ġjava . util .* Ċ import Ġjavax . persistence . Column Ċ import Ġjavax . persistence . Entity Ċ import Ġjavax . persistence . Id Ċ import Ġjavax . persistence . Table Ċ import Ġjavax . validation . constraints . Email Ċ import Ġjavax . validation . constraints . NotBlank Ċ import Ġjavax . validation . constraints . Size Ċ Ċ @ Entity Ċ @ Table ( name Ġ= Ġ" app _ user ") Ċ @ TypeDef ( ĊĠĠĠ Ġname Ġ= Ġ" list - array ", ĊĠĠĠ Ġtype Class Ġ= Ġcom . vl ad mi hal cea . hibernate . type . array . List ArrayType :: class Ċ ) Ċ data Ġclass ĠUser ( ĊĊĠĠĠ Ġ@ Id ĊĠĠĠ Ġ// ĠNo Ġ@ GeneratedValue , Ġsince Ġwe Ġwant Ġto Ġre - use ĠUUID s Ġfrom ĠOAuth 2 ĠProvider Ġwhere Ġpossible ĊĠĠĠ Ġvar Ġid : ĠUUID ?, ĊĊĠĠĠ Ġ@ field : NotBlank ĊĠĠĠ Ġ// Ġ@ field : Pattern ( regexp Ġ= ĠLOGIN _ REGEX ) ĊĠĠĠ Ġ@ field : Size ( min Ġ= Ġ 1 , Ġmax Ġ= Ġ 5 0 ) ĊĠĠĠ Ġvar Ġlogin : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ field : Size ( max Ġ= Ġ 5 0 ) ĊĠĠĠ Ġvar ĠfirstName : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ field : Size ( max Ġ= Ġ 5 0 ) ĊĠĠĠ Ġvar ĠlastName : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ field : Size ( max Ġ= Ġ 5 0 ) ĊĠĠĠ Ġvar Ġname : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ field : Email ĊĠĠĠ Ġ@ field : Size ( min Ġ= Ġ 5 , Ġmax Ġ= Ġ 2 5 4 ) ĊĠĠĠ Ġvar Ġemail : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ field : Size ( max Ġ= Ġ 2 5 6 ) ĊĠĠĠ Ġvar ĠimageUrl : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġvar Ġactivated : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠ Ġ@ Json Format ( shape Ġ= ĠJson Format . Shape . STRING , Ġpattern Ġ= ĠConstants . J ACK SON _ DATE _ TIME _ FORMAT ) ĊĠĠĠ Ġvar ĠcreatedAt : ĠZ onedDateTime ? Ġ= ĠZ onedDateTime . now (), ĊĊĠĠĠ Ġ@ Json Format ( shape Ġ= ĠJson Format . Shape . STRING , Ġpattern Ġ= ĠConstants . J ACK SON _ DATE _ TIME _ FORMAT ) ĊĠĠĠ Ġvar ĠupdatedAt : ĠZ onedDateTime ? Ġ= ĠZ onedDateTime . now (), ĊĊĠĠĠ Ġ@ Json Format ( shape Ġ= ĠJson Format . Shape . STRING , Ġpattern Ġ= ĠConstants . J ACK SON _ DATE _ TIME _ FORMAT ) ĊĠĠĠ Ġvar Ġlast Login : ĠZ onedDateTime ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ Type ( type Ġ= Ġ" list - array ") ĊĠĠĠ Ġ@ Column ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" roles ", ĊĠĠĠĠĠĠĠ Ġcolumn Definition Ġ= Ġ" text []" ĊĠĠĠ Ġ) ĊĠĠĠ Ġvar Ġroles : ĠList < String > Ġ= ĠlistOf (), ĊĊĠĠĠ Ġvar Ġemoji : ĠString Ġ= Ġ" ðŁĳ ¤ " Ċ Ċ ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" User ( id =${ this . id }, Ġname =${ this . name }), Ġroles =${ this . roles }" Ċ Ċ } Ċ