/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 2 1 Ġthe Ġoriginal Ġ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 Ġorg . kt orm . support . mysql Ċ Ċ import Ġorg . kt orm . expression . Column Expression Ċ import Ġorg . kt orm . expression . Scalar Expression Ċ import Ġorg . kt orm . schema . Boolean Sql Type Ċ import Ġorg . kt orm . schema . Column Ċ import Ġorg . kt orm . schema . Sql Type Ċ Ċ /** Ċ Ġ* ĠEnum Ġclass Ġrepresents Ġsearch Ġmodifiers Ġin ĠMySQL Ġ` match Ġ... Ġagainst Ġ... ` Ġexpressions . Ċ Ġ* ĠSee Ġhttps :// dev . mysql . com / doc / refman / 5 . 5 / en / full text - search . html Ċ Ġ*/ Ċ public Ġenum Ġclass ĠSearch Modifier ( private Ġval Ġvalue : ĠString ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSearch Ġmodifier Ġ` in Ġnatural Ġlanguage Ġmode `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠIN _ NAT UR AL _ LANGUAGE _ MODE (" in Ġnatural Ġlanguage Ġmode "), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSearch Ġmodifier Ġ` in Ġnatural Ġlanguage Ġmode Ġwith Ġquery Ġexpansion `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠIN _ NAT UR AL _ LANGUAGE _ MODE _ WITH _ QUERY _ EXP AN SION (" in Ġnatural Ġlanguage Ġmode Ġwith Ġquery Ġexpansion "), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSearch Ġmodifier Ġ` in Ġboolean Ġmode `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠIN _ BOOLEAN _ MODE (" in Ġboolean Ġmode "), ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSearch Ġmodifier Ġ` with Ġquery Ġexpansion `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ ĠWITH _ QUERY _ EXP AN SION (" with Ġquery Ġexpansion "); ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠMatch Ġagainst Ġexpression , Ġrepresents Ġan Ġ` match Ġ... Ġagainst Ġ... ` Ġoperation Ġin ĠMySQL . Ċ Ġ* ĠSee Ġhttps :// dev . mysql . com / doc / refman / 5 . 5 / en / insert - on - duplicate . html Ċ Ġ* Ċ Ġ* Ġ@ property Ġmatch Columns Ġcolumns Ġto Ġbe Ġsearched . Ċ Ġ* Ġ@ property Ġsearch String Ġthe Ġsearch Ġstring . Ċ Ġ* Ġ@ property Ġsearch Modifier Ġoptional Ġmodifier Ġthat Ġindicates Ġwhat Ġtype Ġof Ġsearch Ġto Ġperform . Ċ Ġ*/ Ċ public Ġdata Ġclass ĠMatch Again st Expression ( ĊĠĠĠ Ġval Ġmatch Columns : ĠList < Column Expression <* >>, ĊĠĠĠ Ġval Ġsearch String : ĠString , ĊĠĠĠ Ġval Ġsearch Modifier : ĠSearch Modifier ? Ġ= Ġnull , ĊĠĠĠ Ġoverride Ġval Ġsql Type : ĠSql Type < Boolean > Ġ= ĠBoolean Sql Type , ĊĠĠĠ Ġoverride Ġval Ġis Leaf Node : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġoverride Ġval Ġextra Properties : ĠMap < String , ĠAny > Ġ= Ġempty Map () Ċ ) Ġ: ĠScalar Expression < Boolean >() Ċ Ċ /** Ċ Ġ* ĠInter mediate Ġclass Ġthat Ġwraps Ġthe Ġsearch Ġcolumns Ġof Ġa Ġ[ Match Again st Expression ]. Ċ Ġ*/ Ċ public Ġclass ĠMatch Columns ( columns : ĠList < Column Expression <* >>) Ġ: ĠList < Column Expression <* >> Ġby Ġcolumns Ċ Ċ /** Ċ Ġ* ĠReturn Ġan Ġintermediate Ġobject Ġthat Ġwraps Ġthe Ġcolumns Ġto Ġbe Ġsearched . ĠWe Ġcan Ġcontinue Ġto Ġcall Ġ[ again st ] Ġon Ġthe Ċ Ġ* Ġreturned Ġobject Ġto Ġcreate Ġa Ġ[ Match Again st Expression ] Ġthat Ġsearches Ġthe Ġwrapped Ġcolumns . Ċ Ġ*/ Ċ public Ġfun Ġmatch ( var arg Ġcolumns : ĠColumn < *> ): ĠMatch Columns Ġ{ ĊĠĠĠ Ġreturn ĠMatch Columns ( columns . map Ġ{ Ġit . as Expression () Ġ}) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreate Ġa Ġ[ Match Again st Expression ] Ġthat Ġsearches Ġon Ġthe Ġcurrent Ġ[ Match Columns ]. Ċ Ġ* ĠTrans lated Ġto Ġ` match Ġ( col 1 , Ġcol 2 ) Ġagainst Ġ( search String Ġmodifier )` Ġin ĠSQL . Ċ Ġ*/ Ċ public Ġfun ĠMatch Columns . again st ( search String : ĠString , Ġmodifier : ĠSearch Modifier ? Ġ= Ġnull ): ĠMatch Again st Expression Ġ{ ĊĠĠĠ Ġreturn ĠMatch Again st Expression ( this , Ġsearch String , Ġmodifier ) Ċ } Ċ