package Ġcom . op id is . unit of work . data . jooq Ċ Ċ import Ġorg . jooq . Query Ċ import Ġjava . util . concurrent . Flow Ċ Ċ // import Ġreactor . core . publisher . Mono Ċ Ċ type alias ĠQuery Executor Ġ= Ġ( Query ) Ġ-> ĠFlow . Publisher < *> Ċ Ċ abstract Ġclass ĠCr ud Repository < T , ĠID >( protected Ġval Ġquery Executor : ĠQuery Executor ? Ġ= Ġnull ) Ġ{ ĊĊĠĠĠ Ġprotected Ġinline Ġfun Ġ< re ified ĠS > executeQuery ( query : ĠQuery ): ĠFlow . Publisher < S > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġdon 't Ġhave Ġa Ġquery Ġexecutor Ġdefined Ġthen Ġexecute Ġthe Ġquery Ġjust Ġnow ĊĠĠĠĠĠĠĠ Ġ// Ġand Ġreturn Ġa Ġmono Ġwith Ġthe Ġcontent . ĊĠĠĠĠĠĠĠ Ġif Ġ( query Executor Ġ== Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDefault Ġis Ġjust Ġto Ġexecute Ġa Ġquery Ġon Ġthe Ġcurrent Ġthread . Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMono . just ( query . execute () Ġas ĠS ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġhave Ġa Ġquery Ġexecutor , Ġthen Ġinvoke Ġthat . ĠE . g . Ġto Ġbatch Execute Ġinserts Ġwithin Ġa Ġtransaction ĊĠĠĠĠĠĠĠ Ġ// ĠOr Ġto Ġrun Ġall Ġqueries Ġsynchronous ly Ġon Ġa Ġspecific Ġthread Ġdistinct Ġfrom Ġthe Ġevent Ġloop Ġthread . ĊĠĠĠĠĠĠĠ Ġ// ĠUn checked Ġcast , Ġis Ġthere Ġa Ġbetter Ġway Ġto Ġdo Ġthis ? ĠWe Ġdo Ġwant Ġan Ġexception Ġif Ġthis Ġcast Ġfails ĊĠĠĠĠĠĠĠ Ġ// Ġfor Ġsome Ġreason Ġso ĠI Ġexpect Ġthis Ġwill Ġbe Ġfine . ĊĠĠĠĠĠĠĠ Ġreturn Ġquery Executor ?. invoke ( query ) Ġas ĠFlow . Publisher < S > ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġabstract Ġfun Ġ< S Ġ: ĠT > Ġsave ( var 1 : ĠS ): ĠMono < S > ĊĊĠĠĠ Ġabstract Ġfun Ġ< S Ġ: ĠT > Ġsave All ( var 1 : ĠIterable < S >): ĠFlux < S > ĊĊĠĠĠ Ġabstract Ġfun Ġ< S Ġ: ĠT > Ġsave All ( var 1 : ĠPublisher < S >): ĠFlux < S > ĊĊĠĠĠ Ġabstract Ġfun Ġfind ById ( var 1 : ĠID ): ĠMono < T > ĊĊĠĠĠ Ġabstract Ġfun Ġfind ById ( var 1 : ĠPublisher < ID >): ĠMono < T > ĊĊĠĠĠ Ġabstract Ġfun Ġexists ById ( var 1 : ĠID ): ĠMono < Boolean > ĊĊĠĠĠ Ġabstract Ġfun Ġexists ById ( var 1 : ĠPublisher < ID >): ĠMono < Boolean > ĊĊĠĠĠ Ġabstract Ġfun ĠfindAll (): ĠFlux < T > ĊĊĠĠĠ Ġabstract Ġfun ĠfindAll ById ( var 1 : ĠIterable < ID >): ĠFlux < T > ĊĊĠĠĠ Ġabstract Ġfun ĠfindAll ById ( var 1 : ĠPublisher < ID >): ĠFlux < T > ĊĊĠĠĠ Ġabstract Ġfun Ġcount (): ĠMono < Long > ĊĊĠĠĠ Ġabstract Ġfun Ġdelete ById ( var 1 : ĠID ): ĠMono < Void > ĊĊĠĠĠ Ġabstract Ġfun Ġdelete ById ( var 1 : ĠPublisher < ID >): ĠMono < Void > ĊĊĠĠĠ Ġabstract Ġfun Ġdelete ( var 1 : ĠT ): ĠMono < Void > ĊĊĠĠĠ Ġabstract Ġfun Ġdelete All ( var 1 : ĠIterable < T >): ĠMono < Void > ĊĊĠĠĠ Ġabstract Ġfun Ġdelete All ( var 1 : ĠPublisher < out ĠT >): ĠMono < Void > ĊĊĠĠĠ Ġabstract Ġfun Ġdelete All (): ĠMono < Void > ĊĠĠĠ Ġ*/ Ċ } Ċ