packages feed

relational-schemas 0.1.2.2 → 0.1.3.0

raw patch · 2 files changed

+36/−9 lines, 2 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Database.Relational.Schema.DB2Syscat.Columns: insertQueryColumns :: Relation p_asSK Columns -> InsertQuery p_asSK
+ Database.Relational.Schema.DB2Syscat.Columns: insertQueryColumns :: Relation p_aJu2 Columns -> InsertQuery p_aJu2
- Database.Relational.Schema.MySQLInfo.Columns: insertQueryColumns :: Relation p_a8RF Columns -> InsertQuery p_a8RF
+ Database.Relational.Schema.MySQLInfo.Columns: insertQueryColumns :: Relation p_a9Er Columns -> InsertQuery p_a9Er
- Database.Relational.Schema.OracleDataDictionary.TabColumns: insertQueryDbaTabColumns :: Relation p_ad6L DbaTabColumns -> InsertQuery p_ad6L
+ Database.Relational.Schema.OracleDataDictionary.TabColumns: insertQueryDbaTabColumns :: Relation p_agiL DbaTabColumns -> InsertQuery p_agiL
- Database.Relational.Schema.PgCatalog.PgAttribute: insertQueryPgAttribute :: Relation p_aoFW PgAttribute -> InsertQuery p_aoFW
+ Database.Relational.Schema.PgCatalog.PgAttribute: insertQueryPgAttribute :: Relation p_aBX8 PgAttribute -> InsertQuery p_aBX8
- Database.Relational.Schema.PgCatalog.PgType: insertQueryPgType :: Relation p_alQd PgType -> InsertQuery p_alQd
+ Database.Relational.Schema.PgCatalog.PgType: insertQueryPgType :: Relation p_awNM PgType -> InsertQuery p_awNM
- Database.Relational.Schema.SQLServerSyscat.Columns: insertQueryColumns :: Relation p_ajYK Columns -> InsertQuery p_ajYK
+ Database.Relational.Schema.SQLServerSyscat.Columns: insertQueryColumns :: Relation p_atl4 Columns -> InsertQuery p_atl4
- Database.Relational.Schema.SQLServerSyscat.Types: insertQueryTypes :: Relation p_aiLe Types -> InsertQuery p_aiLe
+ Database.Relational.Schema.SQLServerSyscat.Types: insertQueryTypes :: Relation p_ar7F Types -> InsertQuery p_ar7F
- Database.Relational.Schema.SQLite3Syscat.IndexInfo: insertQueryIndexInfo :: Relation p_ahTU IndexInfo -> InsertQuery p_ahTU
+ Database.Relational.Schema.SQLite3Syscat.IndexInfo: insertQueryIndexInfo :: Relation p_aoU6 IndexInfo -> InsertQuery p_aoU6
- Database.Relational.Schema.SQLite3Syscat.IndexList: insertQueryIndexList :: Relation p_agXJ IndexList -> InsertQuery p_agXJ
+ Database.Relational.Schema.SQLite3Syscat.IndexList: insertQueryIndexList :: Relation p_anbM IndexList -> InsertQuery p_anbM
- Database.Relational.Schema.SQLite3Syscat.TableInfo: insertQueryTableInfo :: Relation p_ahk7 TableInfo -> InsertQuery p_ahk7
+ Database.Relational.Schema.SQLite3Syscat.TableInfo: insertQueryTableInfo :: Relation p_anQd TableInfo -> InsertQuery p_anQd

Files

relational-schemas.cabal view
@@ -1,5 +1,5 @@ name:                relational-schemas-version:             0.1.2.2+version:             0.1.3.0 synopsis:            RDBMSs' schema templates for relational-query description:         This package contains some RDBMSs' schema structure definitions.                      Supported RDBMS schemas are below:
src/Database/Relational/Schema/SQLite3.hs view
@@ -8,11 +8,13 @@ import qualified Data.Map as Map import qualified Database.Relational.Schema.SQLite3Syscat.TableInfo as TableInfo +import Control.Arrow (first) import Control.Applicative ((<|>)) import Data.ByteString (ByteString)-import Data.Char (toLower)-import Data.Int (Int64)+import Data.Char (toLower, toUpper)+import Data.Int (Int8, Int16, Int32, Int64) import Data.Map (Map)+import Data.Time (Day, LocalTime) import Database.Record.Instances () import Database.Relational.Query (Query) import Database.Relational.Query.Type (unsafeTypedQuery)@@ -23,19 +25,40 @@  --{-# ANN module "HLint: ignore Redundant $" #-} +-- <https://www.sqlite.org/datatype3.html>+-- SQLite3 is dynamic typing,+-- so assign narrower constraints in this default mapping.+-- Using upper case typenames along with SQLite3 document. mapFromSqlDefault :: Map String TypeQ mapFromSqlDefault =-    Map.fromList [ ("integer", [t|Int64|])-                 , ("real",    [t|Double|])-                 , ("text",    [t|String|])-                 , ("blob",    [t|ByteString|])+    Map.fromList [ ("INT",        [t|Int32|])+                 , ("INTEGER",    [t|Int32|])+                 , ("TINYINT",    [t|Int8|])+                 , ("SMALLINT",   [t|Int16|])+                 , ("MEDIUMINT",  [t|Int32|])+                 , ("BIGINT",     [t|Int64|])+                 , ("INT2",       [t|Int16|])+                 , ("INT8",       [t|Int64|])++                 , ("CHARACTER",  [t|String|])+                 , ("VARCHAR",    [t|String|])+                 , ("TEXT",       [t|String|])++                 , ("BLOB",       [t|ByteString|])++                 , ("REAL",       [t|Double|])+                 , ("DOUBLE",     [t|Double|])+                 , ("FLOAT",      [t|Float|])++                 , ("DATE",       [t|Day|])+                 , ("DATETIME",   [t|LocalTime|])                  ]  normalizeColumn :: String -> String normalizeColumn = map toLower  normalizeType :: String -> String-normalizeType = normalizeColumn . takeWhile (not . flip elem " (")+normalizeType = map toUpper . takeWhile (not . flip elem " (")  notNull :: TableInfo -> Bool notNull info = isTrue . TableInfo.notnull $ info@@ -43,9 +66,13 @@     isTrue 0 = False     isTrue _ = True +-- for backward compatibility+normalizeMap :: Map String TypeQ -> Map String TypeQ+normalizeMap = Map.fromList . map (first $ map toUpper) . Map.toList+ getType :: Map String TypeQ -> TableInfo -> Maybe (String, TypeQ) getType mapFromSql info = do-    typ <- Map.lookup key mapFromSql+    typ <- Map.lookup key (normalizeMap {- for backward compatibility -} mapFromSql)            <|>            Map.lookup key mapFromSqlDefault     return (normalizeColumn (TableInfo.name info), mayNull typ)