Safe Haskell | None |
---|---|
Language | Haskell2010 |
Database.PostgreSQL.Query.TH
Contents
Synopsis
- deriveEverything :: EntityOptions -> Name -> Q [Dec]
- module Database.PostgreSQL.Query.TH.Entity
- module Database.PostgreSQL.Query.TH.Enum
- module Database.PostgreSQL.Query.TH.Row
- module Database.PostgreSQL.Query.TH.SqlExp
Deriving instances
deriveEverything :: EntityOptions -> Name -> Q [Dec] Source #
Calls sequently deriveFromRow
deriveToRow
deriveEntity
. E.g. code like this:
data Agent = Agent { aName :: !Text , aAttributes :: !HStoreMap , aLongWeirdName :: !Int } deriving (Ord, Eq, Show) $(deriveEverything def { eoIdType = ''Id , eoTableName = textFN . toUnderscore' , eoColumnNames = textFN . toUnderscore' . drop 1 , eoDeriveClasses = [''Show, ''Read, ''Ord, ''Eq , ''FromField, ''ToField, ''PathPiece] } ''Agent )
will generate that:
instance ToRow Agent where toRow (Agent a_aE3w a_aE3x a_aE3y) = [toField a_aE3w, toField a_aE3x, toField a_aE3y] instance FromRow Agent where fromRow = Agent $ Database.PostgreSQL.Simple.FromRow.field * Database.PostgreSQL.Simple.FromRow.field * Database.PostgreSQL.Simple.FromRow.field instance Database.PostgreSQL.Query.Entity Agent where newtype EntityId Agent = AgentId {getAgentId :: Id} deriving (Show, Read, Ord, Eq, FromField, ToField, PathPiece) tableName _ = "agent" fieldNames _ = ["name", "attributes", "long_weird_name"] type AgentId = EntityId Agent