/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 / 2 0 2 0 Ġe - voy age urs Ġtechnologies Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġai . to ck . bot . orche stration . bot . primary Ċ Ċ import Ġai . to ck . bot . engine . user . Player Id Ċ import Ġai . to ck . bot . orche stration . bot . primary . Orche stration Status . ACTIVE Ċ import Ġai . to ck . bot . orche stration . bot . primary . Orche stration Status . CLOSED Ċ import Ġai . to ck . bot . orche stration . shared . Orche stration MetaData Ċ import Ġai . to ck . bot . orche stration . shared . Orche stration Target ed Bot Ċ import Ġai . to ck . bot . orche stration . shared . Secondary Bot Action Ċ import Ġai . to ck . shared . TO CK _ BOT _ DATABASE Ċ import Ġai . to ck . shared . injector Ċ import Ġai . to ck . shared . provide Ċ import Ġcom . mongodb . client . Mongo Collection Ċ import Ġcom . mongodb . client . Mongo Database Ċ import Ġcom . mongodb . client . model . Updates Ċ import Ġorg . lit ote . km ongo . Id Ċ import Ġorg . lit ote . km ongo . ensure Index Ċ import Ġorg . lit ote . km ongo . eq Ċ import Ġorg . lit ote . km ongo . findOne Ċ import Ġorg . lit ote . km ongo . get Collection Ċ import Ġorg . lit ote . km ongo . push Ċ import Ġorg . lit ote . km ongo . setValue Ċ import Ġorg . lit ote . km ongo . update One ById Ċ Ċ interface ĠO rche stration Repository Ġ{ ĊĊĠĠĠ Ġfun Ġcreate ( player Id Ġ: ĠPlayer Id , Ġtarget Metadata Ġ: ĠO rche stration MetaData , Ġtarget Ġ: ĠO rche stration Target ed Bot , Ġactions Ġ: ĠList < Secondary Bot Action >) Ġ: ĠO rche stration ĊĠĠĠ Ġfun Ġget ( player Id Ġ: ĠPlayer Id ) Ġ: ĠO rche stration ? ĊĠĠĠ Ġfun Ġupdate ( id : ĠId < Orche stration >, Ġaction Ġ: ĠSecondary Bot Action ) ĊĠĠĠ Ġfun Ġend ( player Id Ġ: ĠPlayer Id ) Ċ } Ċ Ċ object ĠMongo Orche stration Repository Ġ: ĠO rche stration Repository Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcol : ĠMongo Collection < Orche stration > Ġby Ġlazy Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinjector . provide < Mongo Database >( TO CK _ BOT _ DATABASE ). get Collection < Orche stration >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġensure Index ( Orche stration :: player Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġensure Index ( Orche stration :: player Id , ĠO rche stration :: status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate ( player Id : ĠPlayer Id , Ġtarget Metadata : ĠO rche stration MetaData , Ġtarget : ĠO rche stration Target ed Bot , Ġactions Ġ: ĠList < Secondary Bot Action >): ĠO rche stration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġorche stration Ġ= ĠO rche stration ( player Id Ġ= Ġplayer Id , Ġtarget Metadata Ġ= Ġtarget Metadata , Ġtarget Bot Ġ= Ġtarget , Ġhistory Ġ= Ġactions . to Mutable List ()) ĊĠĠĠĠĠĠĠ Ġcol . insert One ( orche stration ) ĊĠĠĠĠĠĠĠ Ġreturn Ġorche stration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( player Id : ĠPlayer Id ): ĠO rche stration ? Ġ= ĊĠĠĠĠĠĠĠ Ġcol . findOne ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO rche stration :: player Id Ġeq Ġplayer Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO rche stration :: status Ġeq ĠACT IVE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( id : ĠId < Orche stration >, Ġaction : ĠSecondary Bot Action ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcol . update One ( Orche stration :: id Ġeq Ġid , Ġpush ( Orche stration :: history , Ġaction )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend ( player Id : ĠPlayer Id ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcol . update Many ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO rche stration :: player Id Ġeq Ġplayer Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetValue ( ĠO rche stration :: status , ĠCLO SED Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ