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