package Ġio . pil g ri mdb . common . migrations Ċ Ċ import Ġio . pil g ri mdb . common . db . base . Connection Ċ import Ġio . pil g ri mdb . common . model . Auto Field Ċ import Ġio . pil g ri mdb . common . model . CharField Ċ import Ġio . pil g ri mdb . common . model . Model State Ċ import Ġmu . Kotlin Logging Ċ Ċ private Ġval Ġlogger Ġ= ĠKotlin Logging . logger Ġ{} Ċ Ċ class ĠMigration Recorder ( val Ġconnection : ĠConnection ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmigration Model Ġ= ĠModel State ( ĊĠĠĠĠĠĠĠ Ġ" pil g rim _ migrations ", ĊĠĠĠĠĠĠĠ Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAuto Field (" id ", Ġprimary Key Ġ= Ġtrue , Ġindex Ġ= Ġtrue , Ġunique Ġ= Ġtrue , Ġnullable Ġ= Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChar Field (" package ", Ġprimary Key Ġ= Ġfalse , Ġindex Ġ= Ġfalse , Ġunique Ġ= Ġfalse , Ġnullable Ġ= Ġfalse , ĠmaxLength Ġ= Ġ 1 5 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChar Field (" name ", Ġprimary Key Ġ= Ġfalse , Ġindex Ġ= Ġfalse , Ġunique Ġ= Ġfalse , Ġnullable Ġ= Ġfalse , ĠmaxLength Ġ= Ġ 1 5 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġhas Table (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconnection . int rospection . getTable Names (). first OrNull Ġ{ Ġit . name Ġ== Ġmigration Model . name Ġ} Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġensure Schema () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġtable Ġalready Ġexists Ġdo Ġnothing ĊĠĠĠĠĠĠĠ Ġif Ġ( has Table ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug Ġ{ Ġ" Migrations Ġtable Ġalready Ġexists " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogger . info Ġ{ Ġ" Creating Ġmigrations Ġtable " Ġ} ĊĠĠĠĠĠĠĠ Ġconnection . schema Editor . create Model ( migration Model ) ĊĠĠĠ Ġ} Ċ }