package Ġno . sk at te et aten . aur ora . go bo . integration . db h Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Properties Ċ import Ġcom . fasterxml . jackson . annotation . JsonProperty Ċ import Ġno . sk at te et aten . aur ora . go bo . graphql . database . Jdbc User Ċ import Ġjava . time . Instant Ċ Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ data Ġclass ĠDatabase Instance Resource ( ĊĠĠĠ Ġval Ġengine : ĠString , ĊĠĠĠ Ġval Ġinstance Name : ĠString , ĊĠĠĠ Ġval Ġhost : ĠString , ĊĠĠĠ Ġval Ġport : ĠInt , ĊĠĠĠ Ġval Ġcreate Schema Allowed : ĠBoolean , ĊĠĠĠ Ġval Ġlabels : ĠMap < String , ĠString > Ċ ) Ċ Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ data Ġclass ĠDatabase User Resource ( val Ġusername : ĠString , Ġval Ġpassword : ĠString , Ġval Ġtype : ĠString ) Ċ Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ data Ġclass ĠDatabase Metadata Resource ( val Ġsize In Mb : ĠDouble ) Ċ Ċ interface ĠResource Validator Ġ{ ĊĠĠĠ Ġval Ġvalid : ĠBoolean Ċ } Ċ Ċ /** Ċ Ġ* Ġlabels : Ċ Ġ* Ġcreated By Ġ== ĠuserId Ċ Ġ* Ġdiscriminator Ġ== Ġname Ċ Ġ*/ Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ data Ġclass ĠDatabase Schema Resource ( ĊĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠ Ġval Ġtype : ĠString , ĊĠĠĠ Ġval Ġjdbc Url : ĠString , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġcreated Date : ĠLong , ĊĠĠĠ Ġval Ġlast Used Date : ĠLong ?, ĊĠĠĠ Ġval Ġdatabase Instance : ĠDatabase Instance Resource , ĊĠĠĠ Ġval Ġusers : ĠList < Database User Resource >, ĊĠĠĠ Ġval Ġmetadata : ĠDatabase Metadata Resource , ĊĠĠĠ Ġval Ġlabels : ĠMap < String , ĠString > Ċ ) Ġ: ĠResource Validator Ġ{ ĊĠĠĠ Ġval Ġenvironment : ĠString Ġby Ġlabels ĊĠĠĠ Ġval Ġapplication : ĠString Ġby Ġlabels ĊĠĠĠ Ġval Ġaffili ation : ĠString Ġby Ġlabels ĊĠĠĠ Ġval Ġdescription : ĠString ? Ġby Ġlabels . with Default Ġ{ Ġnull Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠuserId : ĠString Ġby Ġlabels ĊĠĠĠ Ġval Ġcreated By : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠuserId ĊĊĠĠĠ Ġ// ĠUsing Ġfilter Ġbecause Ġthere Ġis Ġa Ġcollision Ġon Ġ" name ", Ġproperty Ġand Ġlabel Ġis Ġcalled Ġ" name " ĊĠĠĠ Ġval Ġdiscriminator : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlabels . filter Ġ{ Ġit . key Ġ== Ġ" name " Ġ}. values . first () ĊĊĠĠĠ Ġfun Ġcreated Date As Instant (): ĠInstant Ġ= ĠInstant . of Epoch Milli ( created Date ) ĊĊĠĠĠ Ġfun Ġlast Used Date As Instant (): ĠInstant ? Ġ= ĊĠĠĠĠĠĠĠ Ġlast Used Date ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠInstant . of Epoch Milli ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġvalid : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlabels . containsKey (" aff iliation ") Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . containsKey (" userId ") Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . containsKey (" name ") Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . containsKey (" environment ") Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabels . containsKey (" application ") Ċ } Ċ Ċ data Ġclass ĠRest orable Database Schema Resource ( ĊĠĠĠ Ġval Ġdatabase Schema : ĠDatabase Schema Resource , ĊĠĠĠ Ġval Ġset To Cooldown At : ĠLong , ĊĠĠĠ Ġval Ġdelete After : ĠLong Ċ ) Ġ: ĠResource Validator Ġ{ ĊĠĠĠ Ġval Ġset To Cooldown At Instant : ĠInstant Ġget () Ġ= ĠInstant . of Epoch Milli ( set To Cooldown At ) ĊĠĠĠ Ġval Ġdelete After Instant : ĠInstant Ġget () Ġ= ĠInstant . of Epoch Milli ( delete After ) ĊĠĠĠ Ġoverride Ġval Ġvalid : ĠBoolean Ġget () Ġ= Ġdatabase Schema . valid Ċ } Ċ Ċ data Ġclass ĠSchema Creation Request ( ĊĠĠĠ Ġval Ġlabels : ĠMap < String , ĠString >, ĊĠĠĠ Ġ@ JsonProperty (" schema ") ĊĠĠĠ Ġval Ġjdbc User : ĠJdbc User ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġengine : ĠString , ĊĠĠĠ Ġval Ġinstance Name : ĠString ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrequired Labels Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" aff iliation ", ĊĠĠĠĠĠĠĠ Ġ" name ", ĊĠĠĠĠĠĠĠ Ġ" environment ", ĊĠĠĠĠĠĠĠ Ġ" application " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġfind Missing OrEmpty Labels (): ĠList < String > Ġ= Ġrequired Labels . filter Ġ{ Ġlabels [ it ]?. isEmpty () Ġ?: Ġtrue Ġ} Ċ } Ċ Ċ data Ġclass ĠSchema Update Request ( ĊĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠ Ġval Ġlabels : ĠMap < String , ĠString >, ĊĠĠĠ Ġ@ JsonProperty (" schema ") ĊĠĠĠ Ġval Ġjdbc User : ĠJdbc User ? Ġ= Ġnull Ċ ) Ċ Ċ data Ġclass ĠSchema Deletion Request ( ĊĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠ Ġval Ġcool down Duration Hours : ĠLong ? Ġ= Ġnull Ċ ) Ċ Ċ data Ġclass ĠSchema Rest or ation Request ( ĊĠĠĠ Ġval Ġid : ĠString , ĊĠĠĠ Ġval Ġactive : ĠBoolean Ċ ) Ċ Ċ data Ġclass ĠDb h Response < T >( val Ġstatus : ĠString , Ġval Ġitems : ĠList < T >, Ġval Ġtotal Count : ĠInt Ġ= Ġitems . size ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġok ( var arg Ġitems : ĠT ) Ġ= ĠDb h Response (" OK ", Ġitems . toList ()) ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġok ( item : ĠT ) Ġ= ĠDb h Response (" OK ", ĠlistOf ( item )) ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġok () Ġ= ĠDb h Response (" OK ", Ġempty List < T >()) ĊĠĠĠĠĠĠĠ Ġfun Ġfailed ( item : ĠString ) Ġ= ĠDb h Response (" Failed ", ĠlistOf ( item )) ĊĠĠĠĠĠĠĠ Ġfun Ġfailed () Ġ= ĠDb h Response (" Failed ", Ġempty List < String >()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Ok () Ġ= Ġstatus . lowercase () Ġ== Ġ" ok " ĊĠĠĠ Ġfun Ġis Failure () Ġ= Ġstatus . lowercase () Ġ== Ġ" failed " ĊĠĠĠ Ġfun ĠisEmpty () Ġ= Ġtotal Count Ġ== Ġ 0 Ċ } Ċ Ċ data Ġclass ĠSchema Cooldown Change Response ( val Ġid : ĠString , Ġval Ġsuccess : ĠBoolean ) Ċ