package Ġedu . w gu . os mt . keyword Ċ Ċ import Ġedu . w gu . os mt . db .* Ċ import Ġorg . elasticsearch . common . Nullable Ċ import Ġorg . jetbrains . ex posed . dao . id . Long Id Table Ċ import Ġorg . jetbrains . ex posed . sql . Column Ċ import Ġorg . jetbrains . ex posed . sql .` java - time `. datetime Ċ import Ġorg . springframework . data . annotation . Id Ċ import Ġorg . springframework . data . elasticsearch . annotations .* Ċ import Ġjava . time . LocalDateTime Ċ Ċ @ Document ( index Name Ġ= Ġ" keyword ", Ġcreate Index Ġ= Ġtrue ) Ċ @ Setting ( setting Path Ġ= Ġ"/ elasticsearch / settings . json ") Ċ data Ġclass ĠKeyword ( ĊĠĠĠ Ġ@ Id ĊĠĠĠ Ġ@ Nullable ĊĠĠĠ Ġoverride Ġval Ġid : ĠLong ?, ĊĊĠĠĠ Ġ@ Field ( type Ġ= ĠFieldType . Date , Ġformat Ġ= Ġ[ DateFormat . date _ hour _ minute _ second ]) ĊĠĠĠ Ġoverride Ġval Ġcreation Date : ĠLocalDateTime , ĊĊĠĠĠ Ġ@ Field ( type Ġ= ĠFieldType . Date , Ġformat Ġ= Ġ[ DateFormat . date _ hour _ minute _ second ]) ĊĠĠĠ Ġoverride Ġval Ġupdate Date : ĠLocalDateTime , ĊĊĠĠĠ Ġ@ Field ( type Ġ= ĠFieldType . Keyword ) ĊĠĠĠ Ġval Ġtype : ĠKeyword TypeEnum , ĊĊĠĠĠ Ġ@ Nullable ĊĠĠĠ Ġ@ Multi Field ( ĊĠĠĠĠĠĠĠ Ġmain Field Ġ= ĠField ( type Ġ= ĠFieldType . Text , Ġanalyzer Ġ= Ġ" english _ stem mer "), ĊĠĠĠĠĠĠĠ Ġother Fields Ġ= Ġ[ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInner Field ( suffix Ġ= Ġ"", Ġtype Ġ= ĠFieldType . Search _ As _ You _ Type ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInner Field ( suffix Ġ= Ġ" raw ", Ġanalyzer Ġ= Ġ" whitespace _ exact ", Ġtype Ġ= ĠFieldType . Text ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInner Field ( suffix Ġ= Ġ" keyword ", Ġtype Ġ= ĠFieldType . Keyword ) ĊĠĠĠĠĠĠĠ Ġ] ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġvalue : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ Nullable ĊĠĠĠ Ġval Ġuri : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġ@ Nullable ĊĠĠĠ Ġval Ġframework : ĠString ? Ġ= Ġnull Ċ ) Ġ: ĠDatabase Data , ĠHas Update Date Ġ{ Ċ } Ċ Ċ data Ġclass ĠKeyword Update Obj ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġid : ĠLong , ĊĠĠĠĠĠĠĠ Ġval Ġvalue : ĠString ?, ĊĠĠĠĠĠĠĠ Ġval Ġuri : ĠNullable Field Update < String > ?, ĊĠĠĠĠĠĠĠ Ġval Ġframework : ĠNullable Field Update < String >? Ċ ) Ġ: ĠUpdate Object < Keyword Dao > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply To Dao ( dao : ĠKeyword Dao ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue ?. let { dao . value Ġ= Ġit } ĊĠĠĠĠĠĠĠ Ġuri ?. let { dao . uri Ġ= Ġit . t } ĊĠĠĠĠĠĠĠ Ġframework ?. let { dao . framework Ġ= Ġit . t } ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠKeyword Table Ġ: ĠLong Id Table (" Keyword "), ĠTable With Update < Keyword Update Obj > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġcreation Date Ġ= Ġdatetime (" creation Date ") ĊĠĠĠ Ġoverride Ġval Ġupdate Date Ġ= Ġdatetime (" update Date ") ĊĠĠĠ Ġval Ġvalue : ĠColumn < String ?> Ġ= Ġvarchar (" value ", Ġ 7 6 8 ). nullable () ĊĠĠĠ Ġval Ġuri : ĠColumn < String ?> Ġ= Ġvarchar (" uri ", Ġ 7 6 8 ). nullable () ĊĠĠĠ Ġval Ġframework : ĠColumn < String ?> Ġ= Ġvarchar (" framework ", Ġ 7 6 8 ). nullable () ĊĊĠĠĠ Ġval Ġkeyword _ type _ enum Ġ= ĊĠĠĠĠĠĠĠ Ġcustom Enumeration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" keyword _ type _ enum ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Db Ġ= Ġ{ Ġvalue Ġ-> ĠKeyword TypeEnum . valueOf ( value Ġas ĠString ) Ġ}, Ġto Db Ġ= Ġ{ Ġit . name Ġ}) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġindex ( true , Ġkeyword _ type _ enum , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġindex ( true , Ġkeyword _ type _ enum , Ġuri ) ĊĠĠĠ Ġ} Ċ } Ċ