persistent-2.16.0.0: Type-safe, multi-backend data serialization.
Safe HaskellNone
LanguageHaskell2010

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

Documentation

data EntityDef Source #

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 Attrs 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

  • entitySpan :: !(Maybe SourceSpan)

    Source code span occupied by this entity. May be absent if it is not known.

    Note that until a refactor is completed, these cover the entire persistent parser input rather than the particular entity in question.

    Since: 2.15.0.0

Instances

Instances details
Read EntityDef Source # 
Instance details

Defined in Database.Persist.Types.Base

Methods

readsPrec :: Int -> ReadS EntityDef

readList :: ReadS [EntityDef]

readPrec :: ReadPrec EntityDef

readListPrec :: ReadPrec [EntityDef]

Show EntityDef Source # 
Instance details

Defined in Database.Persist.Types.Base

Methods

showsPrec :: Int -> EntityDef -> ShowS

show :: EntityDef -> String

showList :: [EntityDef] -> ShowS

Eq EntityDef Source # 
Instance details

Defined in Database.Persist.Types.Base

Methods

(==) :: EntityDef -> EntityDef -> Bool

(/=) :: EntityDef -> EntityDef -> Bool

Ord EntityDef Source # 
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 Source # 
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

entitiesPrimary :: EntityDef -> NonEmpty FieldDef Source #

Return the [FieldDef] for the entity keys.

keyAndEntityFields :: EntityDef -> NonEmpty FieldDef Source #

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

keyAndEntityFieldsDatabase :: EntityDef -> NonEmpty FieldDef Source #

Returns a NonEmpty list of FieldDef that correspond with the key columns for an EntityDef including those fields that are marked as MigrationOnly (and therefore only present in the database) or SafeToRemove (and a migration will drop the column if it exists in the database).

For fields on the Haskell type use keyAndEntityFieldsDatabase

Since: 2.15.1.0

data EntityIdDef Source #

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 Source # 
Instance details

Defined in Database.Persist.Types.Base

Methods

readsPrec :: Int -> ReadS EntityIdDef

readList :: ReadS [EntityIdDef]

readPrec :: ReadPrec EntityIdDef

readListPrec :: ReadPrec [EntityIdDef]

Show EntityIdDef Source # 
Instance details

Defined in Database.Persist.Types.Base

Methods

showsPrec :: Int -> EntityIdDef -> ShowS

show :: EntityIdDef -> String

showList :: [EntityIdDef] -> ShowS

Eq EntityIdDef Source # 
Instance details

Defined in Database.Persist.Types.Base

Methods

(==) :: EntityIdDef -> EntityIdDef -> Bool

(/=) :: EntityIdDef -> EntityIdDef -> Bool

Ord EntityIdDef Source # 
Instance details

Defined in Database.Persist.Types.Base

Lift EntityIdDef Source # 
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