| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Internal.Data.Basic.TH.Types
Description
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
- columnInfoNormalName :: Lens' ColumnInfo Text
- 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
- newtype Schema = Schema Text
Documentation
data ParseError Source #
When something goes wrong, this explains what went wrong - hopefully...
Constructors
| ParseError Text |
Instances
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
Constructors
| NullConstraint | |
| NotNullConstraint | |
| DefaultConstraint |
Instances
data ColumnInfo Source #
Column information gathered from a parser
Constructors
| ColumnInfo | |
Fields
| |
Instances
data EntityInfo Source #
Entity information gathered from a parser
Constructors
| EntityInfo | |
Fields
| |
Instances
data ForeignKeyConstraint Source #
Minimal context we need to generate a foreign key constraint
Constructors
| ForeignKeyConstraint | |
Fields
| |
Instances
data UniqueKeyConstraint Source #
Minimal context we need to generate a unique key constraint
Constructors
| UniqueKeyConstraint | |
Fields
| |
Instances
data PrimaryKeyConstraint Source #
Minimal context we need to generate a primary key constraint
Constructors
| PrimaryKeyConstraint | |
Fields
| |
Instances
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.
Constructors
| ParseContext | |
Fields
| |
Instances
class NullValue a where Source #
Defines null values for all datatypes that we support in Basic.
This is basically a hack to avoid usage of unsafeCoerce, because with unsafeCoerce
you can hit segmentation faults due to wrong memory allocation (e.g. Int and Bool).
Minimal complete definition
Instances
| NullValue Bool Source # | |
| NullValue Double Source # | |
| NullValue Int Source # | |
| NullValue ByteString Source # | |
| NullValue Scientific Source # | |
| NullValue Text Source # | |
| NullValue LocalTime Source # | |
| NullValue TimeOfDay Source # | |
| NullValue Day Source # | |
| NullValue (Maybe a) Source # | |
| (NullValue a, NullValue b) => NullValue (a, b) Source # | |