// ĠCopyright Ġ 2 0 2 1 ĠThe ĠCross - Media ĠMeasurement ĠAuthors Ċ // Ċ // Ġ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 Ġorg . wf an et . measurement . king dom . db Ċ Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġorg . wf an et . measurement . common . identity . External Id Ċ import Ġorg . wf an et . measurement . internal . king dom . Re quisition Ċ import Ġorg . wf an et . measurement . internal . king dom . Re quisition . Re quisition State Ċ import Ġorg . wf an et . measurement . internal . king dom . Re quisition Details Ċ Ċ /** ĠAb straction Ġaround Ġthe ĠKing dom 's Ġrel ational Ġdatabase Ġfor Ġstoring Ġ[ Re quisition ] Ġmetadata . Ġ*/ Ċ interface ĠRe quisition Database Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* ĠPers ists Ġa Ġ[ Re quisition ] Ġin Ġthe Ġdatabase . ĊĠĠ Ġ* ĊĠĠ Ġ* ĠIf Ġan Ġequivalent Ġ[ Re quisition ] Ġalready Ġexists , Ġthis Ġwill Ġreturn Ġthat Ġinstead . ĊĠĠ Ġ* ĊĠĠ Ġ* Ġ@ param Ġre quisition Ġthe ĠRe quisition Ġto Ġsave ĊĠĠ Ġ* Ġ@ return Ġthe Ġ[ Re quisition ] Ġin Ġthe Ġdatabase Ġ-- Ġold Ġor Ġnew ĊĠĠ Ġ*/ ĊĠ Ġsuspend Ġfun Ġcreate Re quisition ( requis ition : ĠRe quisition ): ĠRe quisition ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠReturns Ġthe Ġ[ Re quisition ] Ġwith Ġthe Ġgiven ĠID Ġfrom Ġthe Ġdatabase , Ġor Ġnull Ġif Ġnone Ġcan Ġbe Ġfound ĊĠĠ Ġ* Ġwith Ġthat ĠID . ĊĠĠ Ġ*/ ĊĠ Ġsuspend Ġfun Ġget Re quisition ( external Re quisition Id : ĠExternal Id ): ĠRe quisition ? ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTrans itions Ġthe Ġstate Ġof Ġa Ġ[ Re quisition ] Ġto Ġ[ Re quisition State . FUL FIL LED ] Ġif Ġits Ġcurrent Ġstate ĊĠĠ Ġ* Ġis Ġ[ Re quisition State . UN FUL FIL LED ]. ĊĠĠ Ġ*/ ĊĠ Ġsuspend Ġfun Ġfulfill Re quisition ( ĊĠĠĠ Ġexternal Re quisition Id : ĠExternal Id , ĊĠĠĠ Ġd uch y Id : ĠString ĊĠ Ġ): ĠRe quisition Update ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠTrans itions Ġthe Ġstate Ġof Ġa Ġ[ Re quisition ] Ġto Ġ[ Re quisition State . PER MAN ENT LY _ UN AVAILABLE ] Ġif Ġits ĊĠĠ Ġ* Ġcurrent Ġstate Ġis Ġ[ Re quisition State . UN FUL FIL LED ], Ġsetting Ġ[ requis ition _ details . ref usal ] ĊĠĠ Ġ* Ġ[ Re quisition Details . get Ref usal ]. ĊĠĠ Ġ*/ ĊĠ Ġsuspend Ġfun Ġref use Re quisition ( ĊĠĠĠ Ġexternal Re quisition Id : ĠExternal Id , ĊĠĠĠ Ġref usal : ĠRe quisition Details . Ref usal ĊĠ Ġ): ĠRe quisition Update ĊĊĠ Ġ/** ĠStreams Ġ[ Re quisition ] s . Ġ*/ ĊĠ Ġfun Ġstream Re quis itions ( filter : ĠStream Re quis itions Filter , Ġlimit : ĠLong ): ĠFlow < Re quisition > Ċ } Ċ