/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠEric sson ĠAB Ċ Ġ* Ċ Ġ* Ġ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 Ġeu . sof ie _ iot . s ma ug . mobile . model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . room .* Ċ import Ġjava . time . Instant Ċ import Ġjava . time . temporal . Ch rono Unit Ċ import Ġjava . time . temporal . Temporal Unit Ċ Ċ // ĠInstant . MAX Ġwill Ġcause Ġoverflow Ġerrors Ġsomewhere , Ġuse Ġ 1 0 0 0 Ġyears Ġin Ġthe Ġfuture Ġas Ġa Ċ // Ġsubstitute Ġfor Ġend Ġof Ġthe Ġuniverse . Ċ val ĠMIL LEN IA Ġ= ĠInstant . now (). plus Seconds ( 1 0 0 0 Ġ* Ġ 3 6 5 Ġ* Ġ 2 4 Ġ* Ġ 6 0 Ġ* Ġ 6 0 L ) Ċ Ċ /** Ċ Ġ* ĠHow Ġthe Ġdatabase Ġis Ġto Ġbe Ġused : Ċ Ġ* Ċ Ġ* Ġ 1 . ĠThe Ġbase Ġmodel Ġis Ġin Ġnormal Ġform , Ġconsisting Ġof ĠL ocker , ĠActivity Record , ĠMarketplace , Ġetc . Ċ Ġ* Ġ 2 . ĠWe Ġprovide Ġbase Ġoperations Ġfor Ġthese Ġin Ġa ĠLive Model Dao Ġ( using ĠLive Data ) Ġand ĠModel Dao Ġ( using Ċ Ġ* ĠĠĠ Ġcor outines ). ĠNote Ġthat Ġonly ĠModel Dao Ġhas Ġmethods Ġthat Ġchange Ġstate . Ċ Ġ* Ġ 3 . ĠAdditional Ġcollections Ġof Ġmultiple Ġobjects Ġsuch Ġas Ġall Ġlock ers Ġwith Ġtheir Ġcurrently Ġactive Ċ Ġ* ĠĠĠ Ġrent s , Ġall Ġactivities Ġfor Ġa Ġlock er Ġetc . Ġare Ġprovided Ġby Ġtheir Ġown Ġclasses Ġthat Ġabstract Ċ Ġ* ĠĠĠ Ġa Ġlot Ġof Ġthe Ġcomplexity Ċ Ġ* Ġ 4 . ĠThose Ġare Ġaccessed Ġvia ĠLive Aggregate Dao Ġand ĠAggregate Dao ĠDA Os . Ċ Ġ*/ Ċ Ċ @ Dao Ċ interface ĠLive Model Dao Ġ{ ĊĠĠĠ Ġ// -------------------------------------------------------------------------------- ------------ ĊĠĠĠ Ġ// ĠL ocker ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er ") ĊĠĠĠ Ġfun Ġall Lock ers (): ĠLive Data < List < Locker >> ĊĠĠĠ Ġval Ġlock ers Ġget () Ġ= Ġall Lock ers () ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er Ġwhere Ġid Ġ= Ġ: id ") ĊĠĠĠ Ġfun Ġlock er ById ( id : ĠLong ): ĠLive Data < Locker ?> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er Ġwhere Ġmarket place _ id Ġ= Ġ: marketplace Id Ġand Ġlock er _ uuid Ġ= Ġ: uuid ") ĊĠĠĠ Ġfun Ġlock er By Uuid ( marketplace Id : ĠLong , Ġuuid : ĠString ): ĠLive Data < Locker ?> ĊĊĠĠĠ Ġ// ĠThis Ġis Ġone Ġlater Ġfor Ġgeo location Ġof Ġnearby Ġlock ers , Ġjust Ġa Ġdummy Ġall - query Ġnow ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er Ġlimit Ġ 1 0 ") ĊĠĠĠ Ġfun Ġlock ers By Location (): ĠLive Data < List < Locker >> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er Ġwhere Ġid Ġin Ġ(: ids )") ĊĠĠĠ Ġfun Ġlock ers ById s ( var arg Ġids : ĠLong ): ĠLive Data < List < Locker >> ĊĊĠĠĠ Ġ// -------------------------------------------------------------------------------- ------------ ĊĠĠĠ Ġ// ĠL ocker Ġdepend ents ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġcreated _ at Ġ> Ġ: after Ġorder Ġby Ġcreated _ at ") ĊĠĠĠ Ġfun Ġb ids For Locker ( locker Id : ĠLong , Ġafter : ĠInstant Ġ= ĠInstant . EPOCH ): ĠLive Data < List < Bid >> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġnot Ġcompleted ") ĊĠĠĠ Ġfun Ġopen B ids For Locker ( locker Id : ĠLong ): ĠLive Data < List < Bid >> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids Ġwhere Ġid Ġ= Ġ: bid Id ") ĊĠĠĠ Ġfun Ġbid ById ( bid Id : ĠLong ): ĠLive Data < Bid ?> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids Ġwhere Ġnot Ġcompleted ") ĊĠĠĠ Ġfun Ġpending B ids (): ĠLive Data < List < Bid >> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids Ġwhere Ġcompleted ") ĊĠĠĠ Ġfun Ġcompleted B ids (): ĠLive Data < List < Bid >> ĊĊĠĠĠ Ġ// Ġthis Ġrequires Ġthe Ġrent Ġto Ġbe ĠWITH IN Ġafter - before Ġrange ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġstart _ time Ġ>= Ġ: after Ġand Ġend _ time Ġ<= Ġ: before Ġorder Ġby Ġstart _ time ") ĊĠĠĠ Ġfun Ġrent s For Locker Between ( locker Id : ĠLong , Ġafter : ĠInstant Ġ= ĠInstant . EPOCH , Ġbefore : ĠInstant Ġ= ĠMIL LEN IA ): ĠLive Data < List < Rent >> ĊĊĠĠĠ Ġ// Ġthis Ġrequires Ġthe Ġpoint Ġin Ġtime Ġto Ġbe Ġwithin Ġthe Ġrent Ġperiod ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġstart _ time Ġ<= Ġ: time Ġand Ġ' end ' Ġ<= Ġ: time Ġorder Ġby Ġstart _ time ") ĊĠĠĠ Ġfun Ġrent s For Locker At ( locker Id : ĠLong , Ġtime : ĠInstant Ġ= ĠInstant . now ()): ĠLive Data < List < Rent >> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġactivities Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġtime Ġ>= Ġ: after Ġorder Ġby Ġtime Ġdesc Ġlimit Ġ: limit ") ĊĠĠĠ Ġfun Ġactivities For Locker ( locker Id : ĠLong , Ġafter : ĠInstant Ġ= ĠInstant . EPOCH , Ġlimit : ĠInt Ġ= Ġ 1 0 0 0 ): ĠLive Data < List < Locker Activity >> ĊĊĠĠĠ Ġ// ĠR ents Ġoverall ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġstart _ time Ġ>= Ġ: after Ġand Ġend _ time Ġ<= Ġ: before Ġorder Ġby Ġstart _ time ") ĊĠĠĠ Ġfun Ġrent s Between ( after : ĠInstant Ġ= ĠInstant . EPOCH , Ġbefore : ĠInstant Ġ= ĠMIL LEN IA ): ĠLive Data < List < Rent >> ĊĊĠĠĠ Ġ// Ġoverlap s Ġfor Ġspecific Ġlock er ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" locker _ id Ġ= Ġ: locker Id Ġand Ġ(" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġstart Ġis Ġwithin Ġthe Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( start _ time Ġ>= Ġ: start Ġand Ġstart _ time Ġ<= Ġ: end ) Ġor " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġend Ġis Ġwithin Ġthe Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( end _ time Ġ>= Ġ: start Ġand Ġend _ time Ġ<= Ġ: end ) Ġor Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġstarts Ġbefore Ġrange Ġand Ġends Ġafter Ġrange Ġ( i . e . Ġrange Ġis Ġwithin Ġthe Ġrent Ġperiod ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( start _ time Ġ<= Ġ: start Ġand Ġend _ time Ġ>= Ġ: end ) Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ")" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" order Ġby Ġstart _ time " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġrent s For Locker Over ( locker Id : ĠLong , Ġstart : ĠInstant Ġ= ĠInstant . now (), Ġend : ĠInstant Ġ= ĠMIL LEN IA ): ĠLive Data < List < Rent >> ĊĊĠĠĠ Ġ// Ġthis Ġrequires Ġthe Ġrent Ġperiod Ġto ĠOVER LAP Ġthe Ġgiven Ġinterval ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġstart Ġis Ġwithin Ġthe Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( start _ time Ġ>= Ġ: start Ġand Ġstart _ time Ġ<= Ġ: end ) Ġor " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġend Ġis Ġwithin Ġthe Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( end _ time Ġ>= Ġ: start Ġand Ġend _ time Ġ<= Ġ: end ) Ġor Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġstarts Ġbefore Ġrange Ġand Ġends Ġafter Ġrange Ġ( i . e . Ġrange Ġis Ġwithin Ġthe Ġrent Ġperiod ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( start _ time Ġ<= Ġ: start Ġand Ġend _ time Ġ>= Ġ: end ) Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" order Ġby Ġstart _ time " ĊĠĠĠ Ġ) ĊĠĠĠ Ġfun Ġrent s Over ( start : ĠInstant Ġ= ĠInstant . now (), Ġend : ĠInstant Ġ= ĠMIL LEN IA ): ĠLive Data < List < Rent >> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġlock er _ id Ġ= Ġ: locker Id ") ĊĠĠĠ Ġfun Ġrent s For Locker ( locker Id : ĠLong ): ĠLive Data < List < Rent >> ĊĊĠĠĠ Ġ// -------------------------------------------------------------------------------- ------------ ĊĠĠĠ Ġ// ĠMarketplace ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġmarket place ") ĊĠĠĠ Ġfun Ġall Market places (): ĠLive Data < List < Market place >> ĊĠĠĠ Ġval Ġmarket places Ġget () Ġ= Ġall Market places () ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġmarket place Ġwhere Ġid Ġ= Ġ: marketplace Id ") ĊĠĠĠ Ġfun Ġmarket place ById ( marketplace Id : ĠLong ): ĠLive Data < Market place ?> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġmarket place Ġwhere Ġledger Ġ= Ġ: ledger Ġand Ġaddress Ġ= Ġ: contract Address ") ĊĠĠĠ Ġfun Ġmarket place By Contract ( ledger : ĠLed ger Identifier , Ġcontract Address : ĠString ): ĠLive Data < Market place ?> ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġactivities ") ĊĠĠĠ Ġfun Ġall Activities (): ĠLive Data < List < Locker Activity >> ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids ") ĊĠĠĠ Ġfun Ġall B ids (): ĠLive Data < List < Bid >> ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s ") ĊĠĠĠ Ġfun Ġall R ents (): ĠLive Data < List < Rent >> Ċ } Ċ Ċ @ Entity Ċ data Ġclass ĠBid State ( ĊĠĠĠ Ġ@ Column Info ( name =" id ") Ġval Ġid : ĠLong , ĊĠĠĠ Ġ@ Column Info ( name =" state ") Ġval Ġstate : ĠInt Ċ ) Ċ Ċ data Ġclass ĠL ocker F avour ite ( ĊĠĠĠ Ġval Ġid : ĠLong , ĊĠĠĠ Ġval Ġfavour ite : ĠBoolean ) Ċ Ċ data Ġclass ĠL ocker History Collapsed ( ĊĠĠĠ Ġval Ġid : ĠLong , ĊĠĠĠ Ġval Ġhistory Collapsed : ĠBoolean ) ĊĊ Ċ @ Dao Ċ interface ĠModel Dao Ġ{ ĊĠĠĠ Ġ// -------------------------------------------------------------------------------- ------------ ĊĠĠĠ Ġ// ĠL ocker ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er ") ĊĠĠĠ Ġsuspend Ġfun Ġall Lock ers (): ĠList < Locker > ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er Ġwhere Ġid Ġ= Ġ: id ") ĊĠĠĠ Ġsuspend Ġfun Ġlock er ById ( id : ĠLong ): ĠL ocker ? ĊĊĠĠĠ Ġ// ĠTODO : Ġwould Ġhave Ġto Ġfigure Ġout Ġpotentially Ġwhat Ġto Ġdo Ġwith Ġmultiple Ġmarket places ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er Ġwhere Ġlock er _ iid Ġ= Ġ: iid ") ĊĠĠĠ Ġsuspend Ġfun Ġlock er By I id ( iid : ĠString ): ĠL ocker ? ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er Ġwhere Ġmarket place _ id Ġ= Ġ: marketplace Id Ġand Ġlock er _ uuid Ġ= Ġ: uuid ") ĊĠĠĠ Ġsuspend Ġfun Ġlock er By Uuid ( marketplace Id : ĠLong , Ġuuid : ĠString ): ĠL ocker ? ĊĊĠĠĠ Ġ@ Insert ĊĠĠĠ Ġsuspend Ġfun Ġinsert Locker ( locker : ĠL ocker ): ĠLong ĊĊĠĠĠ Ġ@ Update ĊĠĠĠ Ġsuspend Ġfun Ġupdate Locker ( locker : ĠL ocker ): ĠUnit ĊĊĠĠĠ Ġ@ Delete ĊĠĠĠ Ġsuspend Ġfun Ġdelete Locker ( var arg Ġlock ers : ĠL ocker ): ĠUnit ĊĊĠĠĠ Ġ// ĠThis Ġis Ġone Ġlater Ġfor Ġgeo location Ġof Ġnearby Ġlock ers , Ġjust Ġa Ġdummy Ġall - query Ġnow ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġlock er ") ĊĠĠĠ Ġsuspend Ġfun Ġlock ers By Location (): ĠList < Locker > ĊĊĠĠĠ Ġ@ Update ( entity Ġ= ĠL ocker :: class ) ĊĠĠĠ Ġsuspend Ġfun Ġupdate Locker F avour ite ( locker F avour ite : ĠL ocker F avour ite ) ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Locker F avour ite ( locker Id : ĠLong , Ġfavour ite : ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġupdate Locker F avour ite ( Locker F avour ite ( locker Id , Ġfavour ite )) ĊĊĠĠĠ Ġ@ Update ( entity Ġ= ĠL ocker :: class ) ĊĠĠĠ Ġsuspend Ġfun Ġupdate Locker History Collapsed ( locker Collapsed : ĠL ocker History Collapsed ) ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Locker History Collapsed ( locker Id : ĠLong , Ġcollapsed : ĠBoolean ) Ġ= ĊĠĠĠĠĠĠĠ Ġupdate Locker History Collapsed ( Locker History Collapsed ( locker Id , Ġcollapsed )) ĊĊĠĠĠ Ġ// -------------------------------------------------------------------------------- ------------ ĊĠĠĠ Ġ// ĠL ocker Ġdepend ents , Ġreturn Ġin Ġtime Ġorder , Ġall Ġcan Ġbe Ġrestricted Ġto Ġonly Ġ" most Ġrecent " ĊĠĠĠ Ġ// Ġafter Ġa Ġtimestamp ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġcreated _ at Ġ> Ġ: after Ġorder Ġby Ġcreated _ at ") ĊĠĠĠ Ġsuspend Ġfun Ġb ids For Locker ( locker Id : ĠLong , Ġafter : ĠInstant Ġ= ĠInstant . EPOCH ): ĠList < Bid > ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids Ġwhere Ġnot Ġcompleted ") ĊĠĠĠ Ġsuspend Ġfun Ġpending B ids (): ĠList < Bid > ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġb ids Ġwhere Ġcompleted ") ĊĠĠĠ Ġsuspend Ġfun Ġcompleted B ids (): ĠList < Bid > ĊĊĠĠĠ Ġ@ Update ( entity Ġ= ĠBid :: class ) ĊĠĠĠ Ġsuspend Ġfun Ġupdate Bid State ( state : ĠBid State ) ĊĊĠĠĠ Ġ// Ġthis Ġrequires Ġthe Ġrent Ġto Ġbe ĠWITH IN Ġafter - before Ġrange ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġstart _ time Ġ>= Ġ: after Ġand Ġend _ time Ġ<= Ġ: before Ġorder Ġby Ġstart _ time ") ĊĠĠĠ Ġsuspend Ġfun Ġrent s For Locker Between ( locker Id : ĠLong , Ġafter : ĠInstant Ġ= ĠInstant . EPOCH , Ġbefore : ĠInstant Ġ= ĠMIL LEN IA ): ĠList < Rent > ĊĊĠĠĠ Ġ// Ġthis Ġrequires Ġthe Ġpoint Ġin Ġtime Ġto Ġbe Ġwithin Ġthe Ġrent Ġperiod ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġstart _ time Ġ<= Ġ: time Ġand Ġend _ time Ġ<= Ġ: time Ġorder Ġby Ġstart _ time ") ĊĠĠĠ Ġsuspend Ġfun Ġrent s For Locker At ( locker Id : ĠLong , Ġtime : ĠInstant Ġ= ĠInstant . now ()): ĠList < Rent > ĊĊĠĠĠ Ġ// Ġoverlap s Ġfor Ġspecific Ġlock er ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" locker _ id Ġ= Ġ: locker Id Ġand Ġ(" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġstart Ġis Ġwithin Ġthe Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( start _ time Ġ>= Ġ: start Ġand Ġstart _ time Ġ<= Ġ: end ) Ġor " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġend Ġis Ġwithin Ġthe Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( end _ time Ġ>= Ġ: start Ġand Ġend _ time Ġ<= Ġ: end ) Ġor Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġstarts Ġbefore Ġrange Ġand Ġends Ġafter Ġrange Ġ( i . e . Ġrange Ġis Ġwithin Ġthe Ġrent Ġperiod ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( start _ time Ġ<= Ġ: start Ġand Ġend _ time Ġ>= Ġ: end ) Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ")" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" order Ġby Ġstart _ time " ĊĠĠĠ Ġ) ĊĠĠĠ Ġsuspend Ġfun Ġrent s For Locker Over ( locker Id : ĠLong , Ġstart : ĠInstant Ġ= ĠInstant . now (), Ġend : ĠInstant Ġ= ĠMIL LEN IA ): ĠList < Rent > ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġactivities Ġwhere Ġlock er _ id Ġ= Ġ: locker Id Ġand Ġtime Ġ>= Ġ: after Ġorder Ġby Ġtime Ġdesc Ġlimit Ġ: limit ") ĊĠĠĠ Ġsuspend Ġfun Ġactivities For Locker ( locker Id : ĠLong , Ġafter : ĠInstant Ġ= ĠInstant . EPOCH , Ġlimit : ĠInt Ġ= Ġ 1 0 0 0 ): ĠList < Locker Activity > ĊĊĠĠĠ Ġ@ Insert ĊĠĠĠ Ġsuspend Ġfun Ġinsert Bid ( bid : ĠBid ): ĠLong ĊĊĠĠĠ Ġ// Ġb ids Ġcan Ġbe Ġupdated Ġwhen Ġtheir Ġresult Ġis Ġknown ĊĠĠĠ Ġ@ Update ĊĠĠĠ Ġsuspend Ġfun Ġupdate Bid ( bid : ĠBid ): ĠUnit ĊĊĠĠĠ Ġ// Ġuser Ġmay Ġwant Ġto Ġclean Ġout Ġfailed Ġb ids Ġfrom Ġrecord ĊĠĠĠ Ġ@ Delete ĊĠĠĠ Ġsuspend Ġfun Ġdelete Bid ( bid : ĠBid ): ĠUnit ĊĊĠĠĠ Ġ// ĠR ents Ġoverall ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġstart _ time Ġ> Ġ: after Ġand Ġend _ time Ġ< Ġ: before Ġorder Ġby Ġstart _ time ") ĊĠĠĠ Ġsuspend Ġfun Ġrent s Between ( after : ĠInstant Ġ= ĠInstant . EPOCH , Ġbefore : ĠInstant Ġ= ĠMIL LEN IA ): ĠList < Rent > ĊĊĠĠĠ Ġ// Ġthis Ġrequires Ġthe Ġrent Ġperiod Ġto ĠOVER LAP Ġthe Ġgiven Ġinterval ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġrent s Ġwhere Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġstart Ġis Ġwithin Ġthe Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( start _ time Ġ>= Ġ: start Ġand Ġstart _ time Ġ<= Ġ: end ) Ġor " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġend Ġis Ġwithin Ġthe Ġrange ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( end _ time Ġ>= Ġ: start Ġand Ġend _ time Ġ<= Ġ: end ) Ġor Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrent Ġstarts Ġbefore Ġrange Ġand Ġends Ġafter Ġrange Ġ( i . e . Ġrange Ġis Ġwithin Ġthe Ġrent Ġperiod ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"( start _ time Ġ<= Ġ: start Ġand Ġend _ time Ġ>= Ġ: end ) Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" order Ġby Ġstart _ time " ĊĠĠĠ Ġ) ĊĠĠĠ Ġsuspend Ġfun Ġrent s Over ( start : ĠInstant Ġ= ĠInstant . now (), Ġend : ĠInstant Ġ= ĠMIL LEN IA ): ĠList < Rent > ĊĊĊĠĠĠ Ġ@ Insert ĊĠĠĠ Ġsuspend Ġfun Ġinsert Rent ( rent : ĠR ent ): ĠLong ĊĊĠĠĠ Ġ// Ġthis Ġis Ġonly Ġused Ġfor Ġdebugging ĊĠĠĠ Ġ@ Delete ĊĠĠĠ Ġsuspend Ġfun Ġdelete Rent ( rent : ĠR ent ): ĠUnit ĊĊĠĠĠ Ġ@ Insert ĊĠĠĠ Ġsuspend Ġfun Ġinsert Activity ( activity : ĠL ocker Activity ): ĠLong ĊĊĠĠĠ Ġ// Ġactivities Ġare Ġmore Ġor Ġless Ġpermanent Ġrecord , Ġbut Ġold Ġentries Ġmay Ġbe Ġpur ged ĊĠĠĠ Ġ@ Delete ĊĠĠĠ Ġsuspend Ġfun Ġdelete Activity ( activity : ĠL ocker Activity ): ĠUnit ĊĊĠĠĠ Ġ// -------------------------------------------------------------------------------- ------------ ĊĠĠĠ Ġ// ĠMarketplace ĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġmarket place ") ĊĠĠĠ Ġsuspend Ġfun Ġall Market places (): ĠList < Market place > ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġmarket place Ġwhere Ġid Ġ= Ġ: marketplace Id ") ĊĠĠĠ Ġsuspend Ġfun Ġmarket place ById ( marketplace Id : ĠLong ): ĠMarketplace ? ĊĊĠĠĠ Ġ@ Query (" select Ġ* Ġfrom Ġmarket place Ġwhere Ġledger Ġ= Ġ: ledger Ġand Ġaddress Ġ= Ġ: contract Address ") ĊĠĠĠ Ġsuspend Ġfun Ġmarket place By Contract ( ledger : ĠLed ger Identifier , Ġcontract Address : ĠString ): ĠMarketplace ? ĊĊĠĠĠ Ġ@ Insert ĊĠĠĠ Ġsuspend Ġfun Ġinsert Market places ( var arg Ġmarket places : ĠMarketplace ): ĠList < Long > ĊĊĠĠĠ Ġ@ Update ĊĠĠĠ Ġsuspend Ġfun Ġupdate Market places ( var arg Ġmarket places : ĠMarketplace ): ĠUnit ĊĊ Ċ } Ċ Ċ @ Dao Ċ interface ĠLive Aggregate Dao Ġ{ Ċ }