package Ġcom . db flow 5 . query Ċ Ċ import Ġcom . db flow 5 . append Optional Ċ import Ġcom . db flow 5 . append Quoted IfNeeded Ċ import Ġcom . db flow 5 . query . property . I Property Ċ import Ġcom . db flow 5 . sql . Query Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠDescription : ĠDescri bes Ġan Ġeasy Ġway Ġto Ġcreate Ġa ĠSQLite ĠTR IG GER Ċ Ġ*/ Ċ class ĠTrigger Ċ /** Ċ Ġ* ĠCreates Ġa Ġtrigger Ġwith Ġthe Ġspecified Ġtrigger Ġname . ĠYou Ġneed Ġto Ġcomplete Ċ Ġ* Ġthe Ġtrigger Ġusing Ċ Ġ* Ċ Ġ* Ġ@ param Ġname ĠWhat Ġwe Ġshould Ġcall Ġthis Ġtrigger Ċ Ġ*/ Ċ private Ġconstructor ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġname Ġin Ġthe ĠDB ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġname Ġof Ġthis ĠTR IG GER ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġname : ĠString ) Ġ: ĠQuery Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġit 's Ġ[. BEFORE ], Ġ[. AFTER ], Ġor Ġ[. INST E AD _ OF ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġbefore Or After : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġprivate Ġvar Ġtemporary : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġval Ġquery : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Builder Ġ= ĠStringBuilder (" CREATE Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temporary ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Builder . append (" TEMP Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Builder . append (" TRIGGER ĠIF ĠNOT ĠEXISTS Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append Quoted IfNeeded ( name ). append (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append Optional ( before Or After Ġ+ Ġ" Ġ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġquery Builder . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġtrigger Ġas Ġtemporary . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġtemporary () Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . temporary Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies ĠAFTER ĠeventName ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġafter () Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġbefore Or After Ġ= ĠAFTER ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies ĠBE FORE ĠeventName ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbefore () Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġbefore Or After Ġ= ĠBE FORE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies ĠINST E AD ĠOF ĠeventName ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinstead Of () Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġbefore Or After Ġ= ĠINST E AD _ OF ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġa ĠDELETE ĠON Ġcommand ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġon Table ĠThe Ġtable ĠON ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġ< T Model > Ġdelete On ( on Table : ĠClass < T Model >): ĠTrigger Method < T Model > Ġ= ĊĠĠĠĠĠĠĠ ĠTrigger Method ( this , ĠTrigger Method . DELETE , Ġon Table ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġa ĠINSERT ĠON Ġcommand ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġon Table ĠThe Ġtable ĠON ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġin fix Ġfun Ġ< T Model > Ġinsert On ( on Table : ĠClass < T Model >): ĠTrigger Method < T Model > Ġ= ĊĠĠĠĠĠĠĠ ĠTrigger Method ( this , ĠTrigger Method . INSERT , Ġon Table ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠStarts Ġan ĠUPDATE ĠON Ġcommand ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġon Table ĠĠĠ ĠThe Ġtable ĠON ĊĠĠĠĠ Ġ* Ġ@ param Ġproperties Ġif Ġempty , Ġwill Ġnot Ġexecute Ġan ĠOF Ġcommand . ĠIf Ġyou Ġspecify Ġcolumns , ĊĠĠĠĠ Ġ* Ġthe ĠUPDATE ĠOF Ġcolumn 1 , Ġcolumn 2 ,... Ġwill Ġbe Ġused . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< T Model > Ġupdate On ( on Table : ĠClass < T Model >, Ġvar arg Ġproperties : ĠI Property < *> ): ĠTrigger Method < T Model > Ġ= ĊĠĠĠĠĠĠĠ ĠTrigger Method ( this , ĠTrigger Method . UPDATE , Ġon Table , Ġ* properties ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecifies Ġthat Ġwe Ġshould Ġdo Ġthis ĠTR IG GER Ġbefore Ġsome Ġevent ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠBE FORE Ġ= Ġ" BEFORE " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecifies Ġthat Ġwe Ġshould Ġdo Ġthis ĠTR IG GER Ġafter Ġsome Ġevent ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠAFTER Ġ= Ġ" AFTER " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSpecifies Ġthat Ġwe Ġshould Ġdo Ġthis ĠTR IG GER Ġinstead Ġof Ġthe Ġspecified Ġevents ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠINST E AD _ OF Ġ= Ġ" INST E AD ĠOF " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtrigger Name ĠThe Ġname Ġof Ġthe Ġtrigger Ġto Ġuse . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA Ġnew Ġtrigger . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( trigger Name : ĠString ) Ġ= ĠTrigger ( trigger Name ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ infix Ġfun Ġ< T Ġ: ĠAny > ĠTrigger . delete On ( k Class : ĠK Class < T >) Ġ= Ġdelete On ( k Class . java ) Ċ Ċ infix Ġfun Ġ< T Ġ: ĠAny > ĠTrigger . insert On ( k Class : ĠK Class < T >) Ġ= Ġinsert On ( k Class . java ) Ċ Ċ infix Ġfun Ġ< T Ġ: ĠAny > ĠTrigger . update On ( k Class : ĠK Class < T >) Ġ= Ġupdate On ( k Class . java )