package Ġrepository . admin Ċ Ċ import Ġdatastore . DataStore Ċ import Ġdb . Script Ċ import Ġmodel . script . Script Id Ċ import Ġrepository . script . Script Repository Ċ import Ġutil . slack . user . Slack User Ċ import Ġutil . slack . user . is Bot Admin Ċ Ċ interface ĠAdmin Repository Ġ{ ĊĊĠĠĠ Ġfun Ġis Bot Enabled (): ĠBoolean ĊĊĠĠĠ Ġfun Ġset Bot Enabled ( ĊĠĠĠĠĠĠĠ Ġslack User : ĠSlack User ?, ĊĠĠĠĠĠĠĠ Ġenabled : ĠBoolean ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget Scripts ById ( ids : ĠCollection < Script Id >): ĠList < Script > ĊĊĠĠĠ Ġfun Ġinsert Script ( id : ĠScript Id ) ĊĊĠĠĠ Ġfun Ġis Script Enabled ( id : ĠScript Id ): ĠBoolean ĊĊĠĠĠ Ġfun Ġset Script Enabled ( ĊĠĠĠĠĠĠĠ Ġslack User : ĠSlack User ?, ĊĠĠĠĠĠĠĠ Ġid : ĠScript Id , ĊĠĠĠĠĠĠĠ Ġenabled : ĠBoolean ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Store : ĠData Store , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscript Repo : ĠScript Repository ĊĠĠĠĠĠĠĠ Ġ): ĠAdmin Repository Ġ= ĠAdmin Repository Impl ( data Store , Ġscript Repo ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAdmin Repository Impl ( ĊĠĠĠ Ġdata Store : ĠData Store , ĊĠĠĠ Ġprivate Ġval Ġscript Repo : ĠScript Repository Ċ ) Ġ: ĠAdmin Repository Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġqueries Ġ= Ġdata Store . admin Queries ĊĊĠĠĠ Ġoverride Ġfun Ġis Bot Enabled () Ġ= Ġrun Catch ing Ġ{ Ġqueries . select Admin (). execute As One OrNull ()?. bot Enabled Ġ}. get OrNull () Ġ?: Ġtrue ĊĊĠĠĠ Ġoverride Ġfun Ġset Bot Enabled ( ĊĠĠĠĠĠĠĠ Ġslack User : ĠSlack User ?, ĊĠĠĠĠĠĠĠ Ġenabled : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! slack User . is Bot Admin ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġqueries . update Bot Enabled ( enabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Scripts ById ( ids : ĠCollection < Script Id >) Ġ= Ġscript Repo . getById ( ids ) ĊĊĠĠĠ Ġoverride Ġfun Ġinsert Script ( id : ĠScript Id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġscript Repo . insert ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Script Enabled ( id : ĠScript Id ) Ġ= Ġscript Repo . isEnabled ( id ) ĊĊĠĠĠ Ġoverride Ġfun Ġset Script Enabled ( ĊĠĠĠĠĠĠĠ Ġslack User : ĠSlack User ?, ĊĠĠĠĠĠĠĠ Ġid : ĠScript Id , ĊĠĠĠĠĠĠĠ Ġenabled : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! slack User . is Bot Admin ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġscript Repo . setEnabled ( id , Ġenabled ) ĊĠĠĠ Ġ} Ċ } Ċ