package Ġorg . b aby fish . kim mer . sql Ċ Ċ import Ġorg . b aby fish . kim mer . sql . ast . Executable Ċ import Ġkotlin . reflect . K Class Ċ Ċ interface ĠEntities Ġ{ ĊĊĠĠĠ Ġfun Ġ< E : ĠEntity <* >> Ġsave Command ( ĊĠĠĠĠĠĠĠ Ġentity : ĠE , ĊĠĠĠĠĠĠĠ Ġblock : Ġ( Save Options DSL < E >. () Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġ): ĠExec utable < Entity Mutation Result > ĊĊĠĠĠ Ġfun Ġ< E : ĠEntity <* >> Ġsave Command ( ĊĠĠĠĠĠĠĠ Ġentities : ĠList < E >, ĊĠĠĠĠĠĠĠ Ġblock : Ġ( Save Options DSL < E >. () Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġ): ĠExec utable < List < Entity Mutation Result >> ĊĊĠĠĠ Ġfun Ġ< E : ĠEntity < ID >, ĠID : ĠComparable < ID >> Ġdelete Command ( ĊĠĠĠĠĠĠĠ Ġtype : ĠK Class < E >, ĊĠĠĠĠĠĠĠ Ġid : ĠID ĊĠĠĠ Ġ): ĠExec utable < Entity Mutation Result > ĊĊĠĠĠ Ġfun Ġ< E : ĠEntity < ID >, ĠID : ĠComparable < ID >> Ġdelete Command ( ĊĠĠĠĠĠĠĠ Ġtype : ĠK Class < E >, ĊĠĠĠĠĠĠĠ Ġids : ĠCollection < ID > ĊĠĠĠ Ġ): ĠExec utable < List < Entity Mutation Result >> Ċ } Ċ Ċ interface ĠMutation Result Ġ{ ĊĠĠĠ Ġval Ġtotal Affected RowCount : ĠInt Ċ } Ċ Ċ interface ĠEntity Mutation Result Ġ: ĠMutation Result Ġ{ ĊĠĠĠ Ġfun Ġ< E : ĠEntity < ID >, ĠID : ĠComparable < ID >> Ġentity (): ĠE ĊĠĠĠ Ġval Ġtype : ĠMutation Type ĊĠĠĠ Ġval Ġaffected RowCount : ĠInt ĊĠĠĠ Ġval Ġassociations : ĠCollection < Association Mutation Result > Ċ } Ċ Ċ fun Ġ< E : ĠEntity < ID >, ĠID : ĠComparable < ID >> ĠList < Entity Mutation Result >. entities (): ĠList < E > Ġ= ĊĠĠĠ Ġmap Ġ{ Ġit . entity () Ġ} Ċ Ċ interface ĠAssociation Mutation Result Ġ: ĠMutation Result Ġ{ ĊĠĠĠ Ġval Ġassociation Name : ĠString ĊĠĠĠ Ġval Ġmiddle Table Affected RowCount : ĠInt ĊĠĠĠ Ġval Ġmiddle Table Inserted RowCount : ĠInt ĊĠĠĠ Ġval Ġmiddle Table Deleted RowCount : ĠInt ĊĠĠĠ Ġval Ġtargets : ĠList < Associated Target Mutation Result > ĊĠĠĠ Ġval Ġdet ached Targets : ĠList < Associated Target Mutation Result > Ċ } Ċ Ċ interface ĠAssoci ated Target Mutation Result : ĠEntity Mutation Result Ġ{ ĊĠĠĠ Ġval Ġmiddle Table Changed : ĠBoolean Ċ } Ċ Ċ enum Ġclass ĠMutation Type Ġ{ ĊĠĠĠ ĠNONE , ĊĠĠĠ ĠINSERT , ĊĠĠĠ ĠUPDATE , ĊĠĠĠ ĠDELETE Ċ }