package Ġnet . dan le w . predict it . db . sql Ċ Ċ import Ġcom . squareup . sql de light . Column Adapter Ċ import Ġcom . squareup . sql de light . Enum Column Adapter Ċ import Ġcom . squareup . sql de light . db . Sql Driver Ċ import Ġcom . squareup . sql de light . sqlite . driver . Jdbc Sqlite Driver Ċ import Ġnet . dan le w . predict it . model . Contract Id Ċ import Ġnet . dan le w . predict it . model . Market Id Ċ import Ġjava . io . File Ċ import Ġjava . time . Instant Ċ Ċ internal Ġobject ĠSql Del ight Utils Ġ{ ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCreates Ġa Ġ[ Sql Driver ] Ġwith Ġthe Ġcorrect ĠSchema Ġin Ġplace ĊĠĠ Ġ*/ ĊĠ Ġfun Ġcreate Driver ( data Dir : ĠFile , Ġdb Name : ĠString ): ĠSql Driver Ġ{ ĊĠĠĠ Ġcheck (! data Dir . mkdir s ()) Ġ{ Ġ" Could Ġnot Ġcreate Ġdata Ġdirectory Ġ$ data Dir " Ġ} ĊĊĠĠĠ Ġ// ĠNote : ĠWe Ġdon 't Ġsupport Ġupgrades Ġbecause Ġwe Ġassume ĠPredict It 's ĠAPI Ġrare ly Ġchanges ĊĠĠĠ Ġ// ĠIf Ġyou Ġchange Ġschema , Ġjust Ġdelete Ġthe Ġold ĠDB Ġand Ġrecreate ĊĠĠĠ Ġval Ġdb File Ġ= ĠFile ( data Dir , Ġdb Name ) ĊĠĠĠ Ġval Ġneeds Create Ġ= Ġ! db File . exists () ĊĊĠĠĠ Ġval Ġdriver Ġ= ĠJdbc Sqlite Driver (" jdbc : sqlite :$ data Dir /$ dbName ") ĊĊĠĠĠ Ġ// ĠMake Ġsure Ġwe Ġenforce Ġforeign Ġkeys ĊĠĠĠ Ġdriver . execute ( null , Ġ" PR AG MA Ġforeign _ keys = ON ", Ġ 0 ) ĊĊĠĠĠ Ġif Ġ( needs Create ) Ġ{ ĊĠĠĠĠĠ ĠSql Database . Schema . create ( driver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġdriver ĊĠ Ġ} ĊĊĠ Ġfun Ġcreate Sql Database ( driver : ĠSql Driver ): ĠSql Database Ġ{ ĊĠĠĠ Ġreturn ĠSql Database ( ĊĠĠĠĠĠ Ġdriver Ġ= Ġdriver , ĊĠĠĠĠĠ Ġcontract Adapter Ġ= ĠContract . Adapter ( ĊĠĠĠĠĠĠĠ Ġid Adapter Ġ= ĠContract Id Column Adapter , ĊĠĠĠĠĠĠĠ Ġmarket Id Adapter Ġ= ĠMarket Id Column Adapter , ĊĠĠĠĠĠĠĠ Ġstatus Adapter Ġ= ĠEnum Column Adapter () ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ Ġmarket Adapter Ġ= ĠMarket . Adapter ( ĊĠĠĠĠĠĠĠ Ġid Adapter Ġ= ĠMarket Id Column Adapter , ĊĠĠĠĠĠĠĠ Ġstatus Adapter Ġ= ĠEnum Column Adapter () ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ Ġnotification Adapter Ġ= ĠNotification . Adapter ( ĊĠĠĠĠĠĠĠ Ġmarket Id Adapter Ġ= ĠMarket Id Column Adapter , ĊĠĠĠĠĠĠĠ Ġcontract Id Adapter Ġ= ĠContract Id Column Adapter , ĊĠĠĠĠĠĠĠ Ġtype Adapter Ġ= ĠEnum Column Adapter (), ĊĠĠĠĠĠĠĠ Ġexpiration Adapter Ġ= ĠInstant Column Adapter ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ Ġprice Adapter Ġ= ĠPrice . Adapter ( ĊĠĠĠĠĠĠĠ Ġcontract Id Adapter Ġ= ĠContract Id Column Adapter , ĊĠĠĠĠĠĠĠ Ġtime Stamp Adapter Ġ= ĠInstant Column Adapter , ĊĠĠĠĠĠĠĠ Ġprice Adapter Ġ= ĠPrice Column Adapter ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġobject ĠMarket Id Column Adapter Ġ: ĠColumn Adapter < Market Id , ĠLong > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdecode ( database Value : ĠLong ) Ġ= ĠMarket Id ( database Value ) ĊĠĠĠ Ġoverride Ġfun Ġencode ( value : ĠMarket Id ) Ġ= Ġvalue . id ĊĠ Ġ} ĊĊĠ Ġprivate Ġobject ĠContract Id Column Adapter Ġ: ĠColumn Adapter < Contract Id , ĠLong > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdecode ( database Value : ĠLong ) Ġ= ĠContract Id ( database Value ) ĊĠĠĠ Ġoverride Ġfun Ġencode ( value : ĠContract Id ) Ġ= Ġvalue . id ĊĠ Ġ} ĊĊĠ Ġprivate Ġobject ĠInstant Column Adapter Ġ: ĠColumn Adapter < Instant , ĠLong > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdecode ( database Value : ĠLong ) Ġ= ĠInstant . of Epoch Milli ( database Value ) ĊĠĠĠ Ġoverride Ġfun Ġencode ( value : ĠInstant ) Ġ= Ġvalue . to Epoch Milli () ĊĠ Ġ} ĊĊĠ Ġprivate Ġobject ĠPrice Column Adapter Ġ: ĠColumn Adapter < net . dan le w . predict it . model . Price , ĠLong > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdecode ( database Value : ĠLong ) Ġ= Ġnet . dan le w . predict it . model . Price ( database Value . toInt ()) ĊĠĠĠ Ġoverride Ġfun Ġencode ( value : Ġnet . dan le w . predict it . model . Price ) Ġ= Ġvalue . value . to Long () ĊĠ Ġ} Ċ Ċ }