/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 2 . ĠC rop DB Ġauthor Ġor Ġ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 Ġxyz . v open . framework . crop db . kotlin x Ċ Ċ import Ġxyz . v open . framework . crop db . Crop DB Ċ import Ġxyz . v open . framework . crop db . collection . Crop Collection Ċ import Ġxyz . v open . framework . crop db . index . Index Options Ċ import Ġxyz . v open . framework . crop db . index . Index Type Ċ import Ġxyz . v open . framework . crop db . repository . Object Repository Ċ Ċ /** Ċ Ġ* Ġ@ since Ġ 2 . 1 . 0 Ċ Ġ* Ġ@ author Ġ< a Ġhref =" mailto : isk p . me @ gmail . com "> El ve . Xu </ a > Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠOpen s Ġa Ġnamed Ġcollection Ġfrom Ġthe Ġstore . ĠIf Ġthe Ġcollections Ġdoes Ġnot Ċ Ġ* Ġexist Ġit Ġwill Ġbe Ġcreated Ġautomatically Ġand Ġreturned . ĠIf Ġa Ġcollection Ċ Ġ* Ġis Ġalready Ġopened , Ġit Ġis Ġreturned Ġas Ġis . ĠReturned Ġcollection Ġis Ġthread - safe Ċ Ġ* Ġfor Ġconcurrent Ġuse . Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ name ] Ġname Ġof Ġthe Ġcollection Ċ Ġ* Ġ@ param Ġ[ op ] Ġcollection Ġbuilder Ġblock Ċ Ġ* Ġ@ return Ġthe Ġcollection Ċ Ġ*/ Ċ fun ĠC rop DB . get Collection ( name : ĠString , Ġop : Ġ( Crop Collection . () Ġ-> ĠUnit )? Ġ= Ġnull ): ĠC rop Collection Ġ{ ĊĠĠĠ Ġval Ġcollection Ġ= Ġthis . get Collection ( name ) ĊĠĠĠ Ġop ?. invoke ( collection ) ĊĠĠĠ Ġreturn Ġcollection Ċ } Ċ Ċ /** Ċ Ġ* ĠOpen s Ġa Ġtype - safe Ġobject Ġrepository Ġfrom Ġthe Ġstore . ĠIf Ġthe Ġrepository Ċ Ġ* Ġdoes Ġnot Ġexist Ġit Ġwill Ġbe Ġcreated Ġautomatically Ġand Ġreturned . ĠIf Ġa Ċ Ġ* Ġrepository Ġis Ġalready Ġopened , Ġit Ġis Ġreturned Ġas Ġis . Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ T ] Ġtype Ġparameter Ċ Ġ* Ġ@ param Ġ[ op ] Ġrepository Ġbuilder Ġblock Ċ Ġ* Ġ@ return Ġthe Ġobject Ġrepository Ġof Ġtype Ġ[ T ] Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠC rop DB . getRepository ( ĊĠĠĠ Ġno inline Ġop : Ġ( Object Repository < T >. () Ġ-> ĠUnit )? Ġ= Ġnull Ċ ): ĠObject Repository < T > Ġ{ ĊĠĠĠ Ġval Ġrepository Ġ= Ġthis . getRepository ( T :: class . java ) ĊĠĠĠ Ġop ?. invoke ( repository ) ĊĠĠĠ Ġreturn Ġrepository Ċ } Ċ Ċ /** Ċ Ġ* ĠOpen s Ġa Ġtype - safe Ġobject Ġrepository Ġwith Ġa Ġkey Ġidentifier Ġfrom Ġthe Ġstore . ĠIf Ġthe Ġrepository Ċ Ġ* Ġdoes Ġnot Ġexist Ġit Ġwill Ġbe Ġcreated Ġautomatically Ġand Ġreturned . ĠIf Ġa Ċ Ġ* Ġrepository Ġis Ġalready Ġopened , Ġit Ġis Ġreturned Ġas Ġis . Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ T ] Ġtype Ġparameter Ċ Ġ* Ġ@ param Ġkey Ġ Ġthe Ġkey Ġthat Ġwill Ġbe Ġappended Ġto Ġthe Ġrepositories Ġname Ċ Ġ* Ġ@ param Ġ[ op ] Ġrepository Ġbuilder Ġblock Ċ Ġ* Ġ@ return Ġthe Ġobject Ġrepository Ġof Ġtype Ġ[ T ] Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠC rop DB . getRepository ( ĊĠĠĠ Ġkey : ĠString , ĊĠĠĠ Ġno inline Ġop : Ġ( Object Repository < T >. () Ġ-> ĠUnit )? Ġ= Ġnull Ċ ): ĠObject Repository < T > Ġ{ ĊĠĠĠ Ġval Ġrepository Ġ= Ġthis . getRepository ( T :: class . java , Ġkey ) ĊĠĠĠ Ġop ?. invoke ( repository ) ĊĠĠĠ Ġreturn Ġrepository Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġan Ġ[ Index Options ] Ġwith Ġthe Ġspecified Ġ[ index Type ]. Ċ Ġ* Ċ Ġ* Ġ@ param Ġ[ index Type ] Ġthe Ġtype Ġof Ġindex Ġto Ġbe Ġcreated . Ċ Ġ* Ġ@ return Ġa Ġnew Ġ[ Index Options ] Ċ Ġ*/ Ċ fun Ġoption ( index Type : ĠString Ġ= ĠIndex Type . UNIQUE ): ĠIndex Options Ġ= ĠIndex Options . index Options ( index Type )