relational-query-HDBC 0.6.0.3 → 0.6.1.0
raw patch · 9 files changed
+100/−45 lines, 9 filesdep ~persistable-recorddep ~relational-queryPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: persistable-record, relational-query
API changes (from Hackage documentation)
+ Database.HDBC.Query.TH: makeRelationalRecord :: Name -> Q [Dec]
Files
- ChangeLog.md +37/−0
- relational-query-HDBC.cabal +4/−3
- src/Database/HDBC/Query/TH.hs +29/−15
- src/Database/HDBC/Schema/IBMDB2.hs +3/−4
- src/Database/HDBC/Schema/MySQL.hs +4/−2
- src/Database/HDBC/Schema/Oracle.hs +5/−4
- src/Database/HDBC/Schema/PostgreSQL.hs +5/−5
- src/Database/HDBC/Schema/SQLServer.hs +5/−5
- src/Database/HDBC/Schema/SQLite3.hs +8/−7
+ ChangeLog.md view
@@ -0,0 +1,37 @@+<!-- -*- Markdown -*- -->++## 0.6.1.0++- Apply generic instances.++## 0.6.0.2++- Add tested-with.++## 0.6.0.1++- Update compatibility for GHC 8.+- Drop old tests of Oracle.++## 0.6.0.0++- Use updated template of persistable-record.+- Drop persistableSqlValue.++## 0.5.0.0++- Use updated template of relational-query.+- Drop old examples of Oracle.++## 0.4.0.0++- TH quotation of derive class names.++## 0.3.0.0++- Hide chunksInsertActions.+- Add withPrepareDelete.++## 0.2.0.0++- Add logging interface for schema driver.
relational-query-HDBC.cabal view
@@ -1,5 +1,5 @@ name: relational-query-HDBC-version: 0.6.0.3+version: 0.6.1.0 synopsis: HDBC instance of relational-query and typed query interface for HDBC description: This package contains the HDBC instance of relational-query and the typed query interface for HDBC.@@ -20,6 +20,7 @@ , GHC == 7.8.1, GHC == 7.8.2, GHC == 7.8.3, GHC == 7.8.4 , GHC == 7.6.1, GHC == 7.6.2, GHC == 7.6.3 , GHC == 7.4.1, GHC == 7.4.2+extra-source-files: ChangeLog.md library exposed-modules:@@ -55,8 +56,8 @@ , th-data-compat , names-th- , persistable-record >= 0.4 && < 0.5- , relational-query >= 0.8+ , persistable-record >= 0.5+ , relational-query >= 0.9 , relational-schemas , HDBC >=2 , HDBC-session
src/Database/HDBC/Query/TH.hs view
@@ -5,7 +5,7 @@ -- | -- Module : Database.HDBC.Query.TH--- Copyright : 2013 Kei Hibino+-- Copyright : 2013-2017 Kei Hibino -- License : BSD3 -- -- Maintainer : ex8k.hibino@gmail.com@@ -15,6 +15,7 @@ -- This module contains templates to generate Haskell record types -- and HDBC instances correspond to RDB table schema. module Database.HDBC.Query.TH (+ makeRelationalRecord, makeRecordPersistableDefault, defineTableDefault',@@ -37,9 +38,11 @@ import Language.Haskell.TH.Name.CamelCase (varCamelcaseName) import Language.Haskell.TH.Lib.Extra (reportWarning, reportError) -import Database.Record.TH (makeRecordPersistableWithSqlTypeDefault)-import qualified Database.Record.TH as Record-import Database.Relational.Query (Relation, Config, verboseAsCompilerWarning, defaultConfig, relationalQuerySQL)+import Database.Record (ToSql, FromSql)+import Database.Record.TH (recordTemplate, reifyRecordType)+import Database.Relational.Query+ (Config, nameConfig, recordConfig, verboseAsCompilerWarning, defaultConfig,+ Relation, relationalQuerySQL) import Database.Relational.Query.SQL (QuerySuffix) import qualified Database.Relational.Query.TH as Relational @@ -50,18 +53,29 @@ (runLog, newLogChan, takeLogs, Driver, getFields, getPrimaryKey) +defineInstancesForSqlValue :: TypeQ -- ^ Record type constructor.+ -> Q [Dec] -- ^ Instance declarations.+defineInstancesForSqlValue typeCon = do+ [d| instance FromSql SqlValue $typeCon+ instance ToSql SqlValue $typeCon+ |]+ -- | Generate all persistable templates against defined record like type constructor.-makeRecordPersistableDefault :: Name -- ^ Type constructor name- -> Q [Dec] -- ^ Result declaration-makeRecordPersistableDefault recTypeName = do+makeRelationalRecord :: Name -- ^ Type constructor name+ -> Q [Dec] -- ^ Result declaration+makeRelationalRecord recTypeName = do rr <- Relational.makeRelationalRecordDefault recTypeName- (pair, (_mayNs, cts)) <- Record.reifyRecordType recTypeName- let width = length cts- ps <- Record.makeRecordPersistableWithSqlType [t| SqlValue |]- (Record.persistableFunctionNamesDefault recTypeName) pair width+ ((typeCon, _), _) <- reifyRecordType recTypeName+ ps <- defineInstancesForSqlValue typeCon return $ rr ++ ps --- | Generate all HDBC templates about table except for constraint keys using default naming rule.+{-# DEPRECATED makeRecordPersistableDefault "Use makeRelationalRecord instead of this." #-}+-- | Deprecated. use 'makeRelationalRecord'.+makeRecordPersistableDefault :: Name -- ^ Type constructor name+ -> Q [Dec] -- ^ Result declaration+makeRecordPersistableDefault = makeRelationalRecord++-- | Generate all HDBC templates about table except for constraint keys. defineTableDefault' :: Config -- ^ Configuration to generate query with -> String -- ^ Schema name -> String -- ^ Table name@@ -70,10 +84,10 @@ -> Q [Dec] -- ^ Result declaration defineTableDefault' config schema table columns derives = do modelD <- Relational.defineTableTypesAndRecord config schema table columns derives- sqlvD <- makeRecordPersistableWithSqlTypeDefault [t| SqlValue |] schema table $ length columns+ sqlvD <- defineInstancesForSqlValue . fst $ recordTemplate (recordConfig $ nameConfig config) schema table return $ modelD ++ sqlvD --- | Generate all HDBC templates about table using default naming rule.+-- | Generate all HDBC templates about table. defineTableDefault :: Config -- ^ Configuration to generate query with -> String -- ^ Schema name -> String -- ^ Table name@@ -84,7 +98,7 @@ -> Q [Dec] -- ^ Result declaration defineTableDefault config schema table columns derives primary notNull = do modelD <- Relational.defineTable config schema table columns derives primary notNull- sqlvD <- makeRecordPersistableWithSqlTypeDefault [t| SqlValue |] schema table $ length columns+ sqlvD <- defineInstancesForSqlValue . fst $ recordTemplate (recordConfig $ nameConfig config) schema table return $ modelD ++ sqlvD -- | Generate all HDBC templates using system catalog informations with specified config.
src/Database/HDBC/Schema/IBMDB2.hs view
@@ -34,7 +34,7 @@ import Database.HDBC.Record.Query (runQuery') import Database.HDBC.Record.Persistable () -import Database.Record.TH (makeRecordPersistableWithSqlTypeDefaultFromDefined)+import Database.Record (FromSql, ToSql) import Database.Relational.Schema.IBMDB2 (normalizeColumn, notNull, getType, columnsQuerySQL, primaryKeyQuerySQL)@@ -46,9 +46,8 @@ Driver, getFieldsWithMap, getPrimaryKey, emptyDriver) --- Specify type constructor and data constructor from same table name.-$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t| SqlValue |] ''Columns)+instance FromSql SqlValue Columns+instance ToSql SqlValue Columns logPrefix :: String -> String logPrefix = ("IBMDB2: " ++)
src/Database/HDBC/Schema/MySQL.hs view
@@ -26,6 +26,7 @@ import Data.Map (fromList) import Database.HDBC (IConnection, SqlValue)+import Database.Record (FromSql, ToSql) import Database.HDBC.Record.Query (runQuery') import Database.HDBC.Record.Persistable () import Database.HDBC.Schema.Driver ( TypeMap@@ -39,7 +40,6 @@ , getPrimaryKey , emptyDriver )-import Database.Record.TH (makeRecordPersistableWithSqlTypeDefaultFromDefined) import Database.Relational.Schema.MySQL ( normalizeColumn , notNull , getType@@ -50,7 +50,9 @@ import Database.Relational.Schema.MySQLInfo.Columns (Columns) import qualified Database.Relational.Schema.MySQLInfo.Columns as Columns -$(makeRecordPersistableWithSqlTypeDefaultFromDefined [t| SqlValue |] ''Columns)++instance FromSql SqlValue Columns+instance ToSql SqlValue Columns logPrefix :: String -> String logPrefix = ("MySQL: " ++)
src/Database/HDBC/Schema/Oracle.hs view
@@ -23,9 +23,10 @@ import Language.Haskell.TH (TypeQ) import Database.HDBC (IConnection, SqlValue)+import Database.Record (FromSql, ToSql)+ import Database.HDBC.Record.Query (runQuery') import Database.HDBC.Record.Persistable ()-import Database.Record.TH (makeRecordPersistableWithSqlTypeDefaultFromDefined) import Database.HDBC.Schema.Driver ( TypeMap, LogChan, putVerbose, failWith, maybeIO, hoistMaybe, Driver, getFieldsWithMap, getPrimaryKey, emptyDriver@@ -38,9 +39,9 @@ import Database.Relational.Schema.OracleDataDictionary.TabColumns (DbaTabColumns) import qualified Database.Relational.Schema.OracleDataDictionary.TabColumns as Cols -$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t|SqlValue|]- ''DbaTabColumns)++instance FromSql SqlValue DbaTabColumns+instance ToSql SqlValue DbaTabColumns logPrefix :: String -> String logPrefix = ("Oracle: " ++)
src/Database/HDBC/Schema/PostgreSQL.hs view
@@ -31,7 +31,7 @@ import Database.HDBC.Record.Query (runQuery') import Database.HDBC.Record.Persistable () -import Database.Record.TH (makeRecordPersistableWithSqlTypeDefaultFromDefined)+import Database.Record (FromSql, ToSql) import Database.Relational.Schema.PostgreSQL (normalizeColumn, notNull, getType, columnQuerySQL,@@ -45,11 +45,11 @@ Driver, getFieldsWithMap, getPrimaryKey, emptyDriver) -$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t| SqlValue |] ''PgAttribute)+instance FromSql SqlValue PgAttribute+instance ToSql SqlValue PgAttribute -$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t| SqlValue |] ''PgType)+instance FromSql SqlValue PgType+instance ToSql SqlValue PgType logPrefix :: String -> String logPrefix = ("PostgreSQL: " ++)
src/Database/HDBC/Schema/SQLServer.hs view
@@ -29,7 +29,7 @@ import Database.HDBC.Schema.Driver (TypeMap, LogChan, putVerbose, failWith, maybeIO, Driver, hoistMaybe, getFieldsWithMap, getPrimaryKey, emptyDriver)-import Database.Record.TH (makeRecordPersistableWithSqlTypeDefaultFromDefined)+import Database.Record (FromSql, ToSql) import Database.Relational.Schema.SQLServer (columnTypeQuerySQL, getType, normalizeColumn, notNull, primaryKeyQuerySQL) import Database.Relational.Schema.SQLServerSyscat.Columns (Columns)@@ -37,11 +37,11 @@ import Language.Haskell.TH (TypeQ) -$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t| SqlValue |] ''Columns)+instance FromSql SqlValue Columns+instance ToSql SqlValue Columns -$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t| SqlValue |] ''Types)+instance FromSql SqlValue Types+instance ToSql SqlValue Types logPrefix :: String -> String logPrefix = ("SQLServer: " ++)
src/Database/HDBC/Schema/SQLite3.hs view
@@ -30,7 +30,7 @@ import Database.HDBC.Schema.Driver (TypeMap, LogChan, putVerbose, failWith, maybeIO, Driver, hoistMaybe, getFieldsWithMap, getPrimaryKey, emptyDriver)-import Database.Record.TH (makeRecordPersistableWithSqlTypeDefaultFromDefined)+import Database.Record (FromSql, ToSql) import Database.Relational.Schema.SQLite3 (getType, indexInfoQuerySQL, indexListQuerySQL, normalizeColumn, normalizeType, notNull, tableInfoQuerySQL) import Database.Relational.Schema.SQLite3Syscat.IndexInfo (IndexInfo)@@ -38,14 +38,15 @@ import Database.Relational.Schema.SQLite3Syscat.TableInfo (TableInfo) import Language.Haskell.TH (TypeQ) -$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t| SqlValue |] ''TableInfo) -$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t| SqlValue |] ''IndexList)+instance FromSql SqlValue TableInfo+instance ToSql SqlValue TableInfo -$(makeRecordPersistableWithSqlTypeDefaultFromDefined- [t| SqlValue |] ''IndexInfo)+instance FromSql SqlValue IndexList+instance ToSql SqlValue IndexList++instance FromSql SqlValue IndexInfo+instance ToSql SqlValue IndexInfo logPrefix :: String -> String logPrefix = ("SQLite3: " ++)