Safe Haskell | None |
---|---|
Language | Haskell2010 |
module Internal. : Data.Basic.TH.Types Description : Data types and utility function used during TH generation phase Copyright : (c) Nikola Henezi, 2016-2017 Luka Horvat, 2016-2017 License : MIT
This module Internal.defines data types that are used during parsing and TH generation stages. They describe structure of the parser and define minimal representation that is needed from parser in order to generate Template Haskell.
- data ParseError = ParseError Text
- data ColumnConstraint
- data ColumnInfo = ColumnInfo {}
- columnInfoType :: Lens' ColumnInfo Type
- columnInfoText :: Lens' ColumnInfo Text
- columnInfoSqlType :: Lens' ColumnInfo TypeName
- columnInfoName :: Lens' ColumnInfo Name
- columnInfoConstraints :: Lens' ColumnInfo [ColumnConstraint]
- data EntityInfo = EntityInfo {}
- entityInfoType :: Lens' EntityInfo Type
- entityInfoText :: Lens' EntityInfo Text
- entityInfoSQLName :: Lens' EntityInfo Name
- entityInfoName :: Lens' EntityInfo Name
- entityInfoConstraintList :: Lens' EntityInfo [Constraint]
- entityInfoColumnMap :: Lens' EntityInfo [ColumnInfo]
- data ForeignKeyConstraint = ForeignKeyConstraint {
- _fkName :: !Text
- _fkFromT :: !EntityInfo
- _fkFromCols :: ![ColumnInfo]
- _fkToT :: !EntityInfo
- _fkToCols :: ![ColumnInfo]
- fkToT :: Lens' ForeignKeyConstraint EntityInfo
- fkToCols :: Lens' ForeignKeyConstraint [ColumnInfo]
- fkName :: Lens' ForeignKeyConstraint Text
- fkFromT :: Lens' ForeignKeyConstraint EntityInfo
- fkFromCols :: Lens' ForeignKeyConstraint [ColumnInfo]
- data UniqueKeyConstraint = UniqueKeyConstraint {
- _uqName :: !Text
- _uqEntity :: !EntityInfo
- _uqCols :: ![ColumnInfo]
- uqName :: Lens' UniqueKeyConstraint Text
- uqEntity :: Lens' UniqueKeyConstraint EntityInfo
- uqCols :: Lens' UniqueKeyConstraint [ColumnInfo]
- data PrimaryKeyConstraint = PrimaryKeyConstraint {
- _pkName :: !Text
- _pkEntity :: !EntityInfo
- _pkCols :: ![ColumnInfo]
- pkName :: Lens' PrimaryKeyConstraint Text
- pkEntity :: Lens' PrimaryKeyConstraint EntityInfo
- pkCols :: Lens' PrimaryKeyConstraint [ColumnInfo]
- data ParseContext = ParseContext {
- _entities :: ![EntityInfo]
- _fks :: ![ForeignKeyConstraint]
- _pks :: ![PrimaryKeyConstraint]
- _uqs :: ![UniqueKeyConstraint]
- uqs :: Lens' ParseContext [UniqueKeyConstraint]
- pks :: Lens' ParseContext [PrimaryKeyConstraint]
- fks :: Lens' ParseContext [ForeignKeyConstraint]
- entities :: Lens' ParseContext [EntityInfo]
- class NullValue a where
Documentation
data ParseError Source #
When something goes wrong, this explains what went wrong - hopefully...
data ColumnConstraint Source #
List of constraints that can be applied to a Column and affect generated datatype
Currently, only Null constraint affects it by wrapping data type with Maybe
data ColumnInfo Source #
Column information gathered from a parser
ColumnInfo | |
|
data EntityInfo Source #
Entity information gathered from a parser
EntityInfo | |
|
data ForeignKeyConstraint Source #
Minimal context we need to generate a foreign key constraint
ForeignKeyConstraint | |
|
data UniqueKeyConstraint Source #
Minimal context we need to generate a unique key constraint
UniqueKeyConstraint | |
|
data PrimaryKeyConstraint Source #
Minimal context we need to generate a primary key constraint
PrimaryKeyConstraint | |
|
data ParseContext Source #
Full parse context. This datatype is filled with information as parser goes trough the sql
file. After ParseContext
is filled, TH takes over and code generation starts.
ParseContext | |
|