{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE Rank2Types #-}
module Database.Persist.ODBCTypes where
import Data.Text (Text)
import Database.Persist.Sql
data DBType = MySQL | Postgres | MSSQL { mssql2012 :: Bool} | Oracle { oracle12c :: Bool } | DB2 | Sqlite { sqlite3619 :: Bool } deriving (Show,Read)
mysql,postgres,mssqlMin2012,mssql,oracleMin12c,oracle,db2,sqlite,sqliteMin3619 :: DBType
mysql = MySQL
postgres = Postgres
mssqlMin2012 = MSSQL True
mssql = MSSQL False
oracleMin12c = Oracle True
oracle = Oracle False
db2 = DB2
sqlite = Sqlite False
sqliteMin3619 = Sqlite True
data MigrationStrategy = MigrationStrategy {
dbmsLimitOffset :: (Int,Int) -> Bool -> Text -> Text
,dbmsMigrate :: [EntityDef] -> (Text -> IO Statement) -> EntityDef -> IO (Either [Text] [(Bool, Text)])
,dbmsInsertSql :: EntityDef -> [PersistValue] -> InsertSqlResult
,dbmsEscape :: DBName -> Text
,dbmsType :: DBType
}