package Ġcom . github . dur un . nit ron . inout . model . pre parse Ċ Ċ import Ġcom . github . dur un . nit ron . app . pre parse . gzip Ċ import Ġcom . github . dur un . nit ron . core . MD 5 Ċ import Ġcom . github . dur un . nit ron . core . to Blob Ċ import Ġorg . jetbrains . ex posed . dao . Entity ID Ċ import Ġorg . jetbrains . ex posed . dao . Int Id Table Ċ import Ġorg . jetbrains . ex posed . sql . Column Ċ import Ġorg . jetbrains . ex posed . sql . insert AndGet Id Ċ import Ġorg . jetbrains . ex posed . sql . select Ċ import Ġjava . sql . Blob Ċ Ċ object ĠAst Content Table Ġ: ĠInt Id Table (" ast _ contents ") Ġ{ ĊĠĠĠ Ġval Ġcontent : ĠColumn < Blob > Ġ= Ġblob (" content ") ĊĠĠĠ Ġval Ġchecksum : ĠColumn < String > Ġ= Ġvarchar (" checksum ", Ġ 4 0 ) ĊĠĠĠĠĠĠĠ Ġ. unique Index () Ċ } Ċ Ċ fun ĠAst Content Table . insert AndGet Id ( content : ĠString ): ĠEntity ID < Int > Ġ{ ĊĠĠĠ Ġreturn Ġinsert AndGet Id Ġ{ ĊĠĠĠĠĠĠĠ Ġit [ this . content ] Ġ= Ġcontent . gzip (). to Blob () ĊĠĠĠĠĠĠĠ Ġit [ this . checksum ] Ġ= ĠMD 5 . digest ( content ). toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAst Content Table . insert If Absent AndGet Id ( content : ĠString ): ĠEntity ID < Int > Ġ{ ĊĠĠĠ Ġval Ġchecksum Ġ= ĠMD 5 . digest ( content ). toString () ĊĠĠĠ Ġreturn Ġ Ġthis ĊĠĠĠĠĠĠĠ Ġ. select Ġ{ ĠAst Content Table . checksum Ġeq Ġchecksum Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit [ Ast Content Table . id ] Ġ} ĊĠĠĠĠĠĠĠ Ġ. first OrNull () ĊĠĠĠ Ġ?: Ġinsert AndGet Id Ġ{ ĊĠĠĠĠĠĠĠ Ġit [ this . content ] Ġ= Ġcontent . gzip (). to Blob () ĊĠĠĠĠĠĠĠ Ġit [ this . checksum ] Ġ= Ġchecksum ĊĠĠĠ Ġ} Ċ }