package Ġorg . vit riv r . cott ont ail . execution . operators . management Ċ Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . flow Ċ import Ġorg . vit riv r . cott ont ail . database . column . Column Def Ċ import Ġorg . vit riv r . cott ont ail . database . entity . Entity Ċ import Ġorg . vit riv r . cott ont ail . database . entity . Entity Tx Ċ import Ġorg . vit riv r . cott ont ail . database . queries . GroupId Ċ import Ġorg . vit riv r . cott ont ail . execution . Transaction Context Ċ import Ġorg . vit riv r . cott ont ail . execution . operators . basics . Operator Ċ import Ġorg . vit riv r . cott ont ail . model . basics . Name Ċ import Ġorg . vit riv r . cott ont ail . model . basics . Record Ċ import Ġorg . vit riv r . cott ont ail . model . basics . Type Ċ import Ġorg . vit riv r . cott ont ail . model . record set . Standalone Record Ċ import Ġorg . vit riv r . cott ont ail . model . values . Double Value Ċ import Ġorg . vit riv r . cott ont ail . model . values . Long Value Ċ import Ġorg . vit riv r . cott ont ail . model . values . types . Value Ċ import Ġkotlin . time . Experimental Time Ċ import Ġkotlin . time . measure Timed Value Ċ Ċ /** Ċ Ġ* ĠAn Ġ[ Operator . Pipeline Operator ] Ġused Ġduring Ġquery Ġexecution . ĠInser ts Ġall Ġincoming Ġentries Ġinto Ġan Ċ Ġ* Ġ[ Entity ] Ġthat Ġit Ġreceives Ġwith Ġthe Ġprovided Ġ[ Value ]. Ċ Ġ* Ċ Ġ* Ġ@ author ĠR alph ĠG asser Ċ Ġ* Ġ@ version Ġ 1 . 1 . 0 Ċ Ġ*/ Ċ class ĠInsert Operator ( groupId : ĠGroup Id , Ġval Ġentity : ĠEntity , Ġval Ġrecords : ĠList < Record >) Ġ: ĠOperator . Source Operator ( groupId ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġcolumns Ġproduced Ġby Ġthe Ġ[ Insert Operator ]. Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠCOL UMNS : ĠArray < Column Def <* >> Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Def ( Name . ColumnName (" tuple Id "), ĠType . Long , Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColumn Def ( Name . ColumnName (" duration _ ms "), ĠType . Double , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠColumns Ġproduced Ġby Ġ[ Insert Operator ]. Ġ*/ ĊĠĠĠ Ġoverride Ġval Ġcolumns : ĠArray < Column Def <* >> Ġ= ĠCOL UMNS ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġthis Ġ[ Insert Operator ] Ġto Ġa Ġ[ Flow ] Ġand Ġreturns Ġit . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠThe Ġ[ Transaction Context ] Ġused Ġfor Ġexecution ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Flow ] Ġrepresenting Ġthis Ġ[ Insert Operator ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Experimental Time ĊĠĠĠ Ġoverride Ġfun Ġto Flow ( context : ĠTransaction Context ): ĠFlow < Record > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtx Ġ= Ġcontext . get Tx ( this . entity ) Ġas ĠEntity Tx ĊĠĠĠĠĠĠĠ Ġreturn Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( record Ġin Ġthis @ Insert Operator . records ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimed Tuple Id Ġ= Ġmeasure Timed Value Ġ{ Ġtx . insert ( record ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( Standalone Record ( 0 L , Ġthis @ Insert Operator . columns , ĠarrayOf ( Long Value ( timed Tuple Id . value !! ), ĠDouble Value ( timed Tuple Id . duration . in Milliseconds )))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }