package Ġcom . netflix . spin n aker . ke el . sql Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . netflix . spin n aker . ke el . api . Environment Ċ import Ġcom . netflix . spin n aker . ke el . api . plugins . Artifact Supplier Ċ import Ġcom . netflix . spin n aker . ke el . persistence . Environment Deletion Repository Ċ import Ġcom . netflix . spin n aker . ke el . persistence . met amodel . Tables . ACTIVE _ ENVIRONMENT Ċ import Ġcom . netflix . spin n aker . ke el . persistence . met amodel . Tables . ENVIRONMENT _ DE LE TION Ċ import Ġcom . netflix . spin n aker . ke el . resources . Resource Spec Identifier Ċ import Ġcom . netflix . spin n aker . ke el . resources . Spec Migr ator Ċ import Ġcom . netflix . spin n aker . ke el . sql . Retry Category . READ Ċ import Ġcom . netflix . spin n aker . ke el . sql . Retry Category . WRITE Ċ import Ġcom . netflix . spin n aker . ke el . sql . delivery configs . make Environment Ċ import Ġcom . netflix . spin n aker . ke el . sql . delivery configs . select Environment Columns Ċ import Ġorg . jooq . DSL Context Ċ import Ġjava . time . Clock Ċ import Ġjava . time . Duration Ċ Ċ /** Ċ Ġ* ĠSQL - based Ġimplementation Ġof Ġ[ Environment Deletion Repository ]. Ċ Ġ*/ Ċ class ĠSql Environment Deletion Repository ( ĊĠ Ġj oo q : ĠDSL Context , ĊĠ Ġclock : ĠClock , ĊĠ Ġresource Spec Identifier : ĠResource Spec Identifier , ĊĠ ĠobjectMapper : ĠObjectMapper , ĊĠ Ġsql Retry : ĠSql Retry , ĊĠ Ġartifact Supp liers : ĠList < Artifact Supplier < *, Ġ* >> Ġ= Ġempty List (), ĊĠ Ġspec Migr ators : ĠList < Spec Migr ator < *, Ġ* >> Ġ= Ġempty List (), Ċ ) Ġ: ĠSql Storage Context ( ĊĠ Ġj oo q , ĊĠ Ġclock , ĊĠ Ġsql Retry , ĊĠ ĠobjectMapper , ĊĠ Ġresource Spec Identifier , ĊĠ Ġartifact Supp liers , ĊĠ Ġspec Migr ators Ċ ), ĠEnvironment Deletion Repository Ġ{ ĊĊĠ Ġoverride Ġfun Ġmark For Deletion ( environment : ĠEnvironment ) Ġ{ ĊĠĠĠ Ġsql Retry . with Retry ( WRITE ) Ġ{ ĊĠĠĠĠĠ Ġj oo q . insert Into ( ENVIRONMENT _ DE LE TION ) ĊĠĠĠĠĠĠĠ Ġ. set ( ENVIRONMENT _ DE LE TION . ENVIRONMENT _ UID , Ġenvironment . uid ĊĠĠĠĠĠĠĠĠĠ Ġ?: Ġerror (" Missing ĠUID Ġfor Ġenvironment : Ġ$ environment ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. set ( ENVIRONMENT _ DE LE TION . LAST _ CHECK ED _ AT , Ġclock . instant ()) ĊĠĠĠĠĠĠĠ Ġ. on Duplicate Key Update () ĊĠĠĠĠĠĠĠ Ġ. set ( ENVIRONMENT _ DE LE TION . LAST _ CHECK ED _ AT , Ġclock . instant ()) ĊĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġis Marked For Deletion ( environment : ĠEnvironment ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġsql Retry . with Retry ( READ ) Ġ{ ĊĠĠĠĠĠ Ġj oo q . fetch Exists ( ĊĠĠĠĠĠĠĠ ĠENV IRONMENT _ DE LE TION , ĊĠĠĠĠĠĠĠ ĠENV IRONMENT _ DE LE TION . ENVIRONMENT _ UID . eq ( environment . uid ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġitems Due For Check ( min Time Since Last Check : ĠDuration , Ġlimit : ĠInt ): ĠCollection < Environment > Ġ{ ĊĠĠĠ Ġval Ġnow Ġ= Ġclock . instant () ĊĠĠĠ Ġval Ġcutoff Ġ= Ġnow . minus ( min Time Since Last Check ) ĊĠĠĠ Ġval Ġenvironment U ids Ġ= Ġsql Retry . with Retry ( WRITE ) Ġ{ ĊĠĠĠĠĠ Ġj oo q . in Transaction Ġ{ ĊĠĠĠĠĠĠĠ Ġselect ( ENVIRONMENT _ DE LE TION . ENVIRONMENT _ UID ) ĊĠĠĠĠĠĠĠĠĠ Ġ. from ( ENVIRONMENT _ DE LE TION ) ĊĠĠĠĠĠĠĠĠĠ Ġ. where ( ENVIRONMENT _ DE LE TION . LAST _ CHECK ED _ AT . less OrEqual ( cutoff )) ĊĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( ENVIRONMENT _ DE LE TION . LAST _ CHECK ED _ AT ) ĊĠĠĠĠĠĠĠĠĠ Ġ. limit ( limit ) ĊĠĠĠĠĠĠĠĠĠ Ġ. for Update () ĊĠĠĠĠĠĠĠĠĠ Ġ. fetch () ĊĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġ( environment Uid ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( ENVIRONMENT _ DE LE TION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( ENVIRONMENT _ DE LE TION . LAST _ CHECK ED _ AT , Ġnow ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where ( ENVIRONMENT _ DE LE TION . ENVIRONMENT _ UID . eq ( environment Uid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġenvironment U ids . map Ġ{ Ġ( environment Uid ) Ġ-> ĊĠĠĠĠĠ Ġsql Retry . with Retry ( READ ) Ġ{ ĊĠĠĠĠĠĠĠ Ġj oo q ĊĠĠĠĠĠĠĠĠĠ Ġ. select Environment Columns () ĊĠĠĠĠĠĠĠĠĠ Ġ. from ( ACTIVE _ ENVIRONMENT ) ĊĠĠĠĠĠĠĠĠĠ Ġ. where ( ACTIVE _ ENVIRONMENT . UID . eq ( environment Uid )) ĊĠĠĠĠĠĠĠĠĠ Ġ. fetch One Ġ{ Ġrecord Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Environment ( record , ĠobjectMapper ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ