persistent-2.14.6.3: Type-safe, multi-backend data serialization.

Safe Haskell | None
Language | Haskell2010

Database.Persist.EntityDef.Internal

Description

The `EntityDef` type, fields, and constructor are exported from this module. Breaking changes to the `EntityDef` type are not reflected in the major version of the API. Please import from Database.Persist.EntityDef instead.

If you need this module, please file a GitHub issue why.

Since: 2.13.0.0

Synopsis

- data EntityDef = EntityDef {
  - entityHaskell :: !EntityNameHS
  - entityDB :: !EntityNameDB
  - entityId :: !EntityIdDef
  - entityAttrs :: ![Attr]
  - entityFields :: ![FieldDef]
  - entityUniques :: ![UniqueDef]
  - entityForeigns :: ![ForeignDef]
  - entityDerives :: ![Text]
  - entityExtra :: !(Map Text [ExtraLine])
  - entitySum :: !Bool
  - entityComments :: !(Maybe Text)
  }
- entityPrimary :: EntityDef -> Maybe CompositeDef
- entitiesPrimary :: EntityDef -> NonEmpty FieldDef
- keyAndEntityFields :: EntityDef -> NonEmpty FieldDef
- toEmbedEntityDef :: EntityDef -> EmbedEntityDef
- data EntityIdDef
  - = EntityIdField !FieldDef
  - | EntityIdNaturalKey !CompositeDef

# Documentation

data EntityDef #

An `EntityDef` represents the information that `persistent` knows about an Entity. It uses this information to generate the Haskell datatype, the SQL migrations, and other relevant conversions.

Constructors

EntityDef |
Fields entityHaskell :: !EntityNameHS The name of the entity as Haskell understands it. entityDB :: !EntityNameDB The name of the database table corresponding to the entity. entityId :: !EntityIdDef The entity's primary key or identifier. entityAttrs :: ![Attr] The `persistent` entity syntax allows you to add arbitrary `Attr`s to an entity using the `!` operator. Those attributes are stored in this list. entityFields :: ![FieldDef] The fields for this entity. Note that the ID field will not be present in this list. To get all of the fields for an entity, use `keyAndEntityFields`. entityUniques :: ![UniqueDef] The Uniqueness constraints for this entity. entityForeigns :: ![ForeignDef] The foreign key relationships that this entity has to other entities. entityDerives :: ![Text] A list of type classes that have been derived for this entity. entityExtra :: !(Map Text [ExtraLine]) entitySum :: !Bool Whether or not this entity represents a sum type in the database. entityComments :: !(Maybe Text) Optional comments on the entity. Since: 2.10.0

#### Instances

Instances details

Read EntityDef # |
Instance details Defined in Database.Persist.Types.Base Methods readsPrec :: Int -> ReadS EntityDef # readList :: ReadS [EntityDef] # readPrec :: ReadPrec EntityDef # readListPrec :: ReadPrec [EntityDef] #
Show EntityDef # |
Instance details Defined in Database.Persist.Types.Base Methods showsPrec :: Int -> EntityDef -> ShowS # show :: EntityDef -> String # showList :: [EntityDef] -> ShowS #
Eq EntityDef # |
Instance details Defined in Database.Persist.Types.Base Methods (==) :: EntityDef -> EntityDef -> Bool # (/=) :: EntityDef -> EntityDef -> Bool #
Ord EntityDef # |
Instance details Defined in Database.Persist.Types.Base Methods compare :: EntityDef -> EntityDef -> Ordering # (<) :: EntityDef -> EntityDef -> Bool # (<=) :: EntityDef -> EntityDef -> Bool # (>) :: EntityDef -> EntityDef -> Bool # (>=) :: EntityDef -> EntityDef -> Bool # max :: EntityDef -> EntityDef -> EntityDef # min :: EntityDef -> EntityDef -> EntityDef #
Lift EntityDef # |
Instance details Defined in Database.Persist.Types.Base Methods lift :: Quote m => EntityDef -> m Exp # liftTyped :: forall (m :: Type -> Type). Quote m => EntityDef -> Code m EntityDef #

entityPrimary :: EntityDef -> Maybe CompositeDef #

entitiesPrimary :: EntityDef -> NonEmpty FieldDef #

Return the `[`FieldDef`]` for the entity keys.

keyAndEntityFields :: EntityDef -> NonEmpty FieldDef #

Returns a `NonEmpty` list of `FieldDef` that correspond with the key columns for an `EntityDef`.

toEmbedEntityDef :: EntityDef -> EmbedEntityDef #

data EntityIdDef #

The definition for the entity's primary key ID.

Since: 2.13.0.0

Constructors

EntityIdField !FieldDef | The entity has a single key column, and it is a surrogate key - that is, you can't go from `rec -> Key rec`. Since: 2.13.0.0
EntityIdNaturalKey !CompositeDef | The entity has a natural key. This means you can write `rec -> Key rec` because all the key fields are present on the datatype. A natural key can have one or more columns. Since: 2.13.0.0

#### Instances

Instances details

Read EntityIdDef # |
Instance details Defined in Database.Persist.Types.Base Methods readsPrec :: Int -> ReadS EntityIdDef # readList :: ReadS [EntityIdDef] # readPrec :: ReadPrec EntityIdDef # readListPrec :: ReadPrec [EntityIdDef] #
Show EntityIdDef # |
Instance details Defined in Database.Persist.Types.Base Methods showsPrec :: Int -> EntityIdDef -> ShowS # show :: EntityIdDef -> String # showList :: [EntityIdDef] -> ShowS #
Eq EntityIdDef # |
Instance details Defined in Database.Persist.Types.Base Methods (==) :: EntityIdDef -> EntityIdDef -> Bool # (/=) :: EntityIdDef -> EntityIdDef -> Bool #
Ord EntityIdDef # |
Instance details Defined in Database.Persist.Types.Base Methods compare :: EntityIdDef -> EntityIdDef -> Ordering # (<) :: EntityIdDef -> EntityIdDef -> Bool # (<=) :: EntityIdDef -> EntityIdDef -> Bool # (>) :: EntityIdDef -> EntityIdDef -> Bool # (>=) :: EntityIdDef -> EntityIdDef -> Bool # max :: EntityIdDef -> EntityIdDef -> EntityIdDef # min :: EntityIdDef -> EntityIdDef -> EntityIdDef #
Lift EntityIdDef # |
Instance details Defined in Database.Persist.Types.Base Methods lift :: Quote m => EntityIdDef -> m Exp # liftTyped :: forall (m :: Type -> Type). Quote m => EntityIdDef -> Code m EntityIdDef #