Copyright | 2013 Kei Hibino |
---|---|

License | BSD3 |

Maintainer | ex8k.hibino@gmail.com |

Stability | experimental |

Portability | unknown |

Safe Haskell | Safe-Inferred |

Language | Haskell2010 |

This module provides proof object definitions of table constraint specifiey by keys.

- data ColumnConstraint c r
- index :: ColumnConstraint c r -> Int
- unsafeSpecifyColumnConstraint :: Int -> ColumnConstraint c r
- data Unique
- type UniqueColumnConstraint = ColumnConstraint Unique
- data NotNull
- type NotNullColumnConstraint = ColumnConstraint NotNull
- data Primary
- type PrimaryColumnConstraint = ColumnConstraint Primary
- data KeyConstraint c r
- indexes :: KeyConstraint c r -> [Int]
- unsafeSpecifyKeyConstraint :: [Int] -> KeyConstraint c r
- type UniqueConstraint = KeyConstraint Unique
- type PrimaryConstraint = KeyConstraint Primary
- uniqueColumn :: PrimaryColumnConstraint r -> UniqueColumnConstraint r
- notNullColumn :: PrimaryColumnConstraint r -> NotNullColumnConstraint r
- leftColumnConstraint :: ColumnConstraint NotNull a -> ColumnConstraint NotNull (a, b)
- unsafeSpecifyNotNullValue :: NotNullColumnConstraint a
- deriveComposite :: ColumnConstraint c r -> KeyConstraint c r
- unique :: PrimaryConstraint r -> UniqueConstraint r
- class HasColumnConstraint c a where
- columnConstraint :: ColumnConstraint c a

- derivedUniqueColumnConstraint :: HasColumnConstraint Primary r => UniqueColumnConstraint r
- derivedNotNullColumnConstraint :: HasColumnConstraint Primary r => NotNullColumnConstraint r
- class HasKeyConstraint c a where
- keyConstraint :: KeyConstraint c a

- derivedCompositePrimary :: HasColumnConstraint Primary r => PrimaryConstraint r
- derivedUniqueConstraint :: HasKeyConstraint Primary r => UniqueConstraint r

# Constraint specified by keys

data ColumnConstraint c r Source

Proof object to specify table constraint
for table record type `r`

and constraint `c`

specified by a single column.

index :: ColumnConstraint c r -> Int Source

Index of key which specifies table constraint.

unsafeSpecifyColumnConstraint Source

:: Int | Key index which specify this constraint |

-> ColumnConstraint c r | Result constraint proof object |

Unsafely generate `ColumnConstraint`

proof object using specified key index.

type UniqueColumnConstraint = ColumnConstraint Unique Source

Specialized unique constraint.

Constraint type. Not-null key.

HasColumnConstraint NotNull Bool | |

HasColumnConstraint NotNull Char | |

HasColumnConstraint NotNull Int8 | |

HasColumnConstraint NotNull Int16 | |

HasColumnConstraint NotNull Int32 | |

HasColumnConstraint NotNull Int64 | |

HasColumnConstraint NotNull String | |

HasColumnConstraint NotNull a => HasColumnConstraint NotNull (a, b) | Inference rule of |

type NotNullColumnConstraint = ColumnConstraint NotNull Source

Specialized not-null constraint.

type PrimaryColumnConstraint = ColumnConstraint Primary Source

Specialized primary constraint.

data KeyConstraint c r Source

Proof object to specify table constraint
for table record type `r`

and constraint `c`

.
Constraint is specified by composite key.

indexes :: KeyConstraint c r -> [Int] Source

Index of key which specifies table constraint.

unsafeSpecifyKeyConstraint Source

:: [Int] | Key index which specify this constraint |

-> KeyConstraint c r | Result constraint proof object |

Unsafely generate `KeyConstraint`

proof object using specified key indexes.

type UniqueConstraint = KeyConstraint Unique Source

Specialized unique constraint.

type PrimaryConstraint = KeyConstraint Primary Source

Specialized primary constraint.

# Deriviations

uniqueColumn :: PrimaryColumnConstraint r -> UniqueColumnConstraint r Source

Derivation rule for `UniqueColumnConstraint`

. Derive Unique from Primary.

notNullColumn :: PrimaryColumnConstraint r -> NotNullColumnConstraint r Source

Derivation rule for `NotNullColumnConstraint`

. Derive NotNull from Primary.

leftColumnConstraint :: ColumnConstraint NotNull a -> ColumnConstraint NotNull (a, b) Source

Derivation rule of `ColumnConstraint`

`NotNull`

for tuple (,) type.

unsafeSpecifyNotNullValue :: NotNullColumnConstraint a Source

Unsafely generate `NotNullColumnConstraint`

proof object of single column value.

deriveComposite :: ColumnConstraint c r -> KeyConstraint c r Source

Derivation rule for `KeyConstraint`

. Derive from `ColumnConstraint`

.

unique :: PrimaryConstraint r -> UniqueConstraint r Source

Derivation rule for `UniqueConstraint`

.

# Inferences

class HasColumnConstraint c a where Source

Interface of inference rule for `ColumnConstraint`

proof object.

columnConstraint :: ColumnConstraint c a Source

Infer `ColumnConstraint`

proof object.

HasColumnConstraint NotNull Bool | |

HasColumnConstraint NotNull Char | |

HasColumnConstraint NotNull Int8 | |

HasColumnConstraint NotNull Int16 | |

HasColumnConstraint NotNull Int32 | |

HasColumnConstraint NotNull Int64 | |

HasColumnConstraint NotNull String | |

HasColumnConstraint NotNull a => HasColumnConstraint NotNull (a, b) | Inference rule of |

derivedUniqueColumnConstraint :: HasColumnConstraint Primary r => UniqueColumnConstraint r Source

Inferred `UniqueColumnConstraint`

proof object.
Record type `r`

has unique key which is derived `r`

has primary key.

derivedNotNullColumnConstraint :: HasColumnConstraint Primary r => NotNullColumnConstraint r Source

Inferred `NotNullColumnConstraint`

proof object.
Record type `r`

has not-null key which is derived `r`

has primary key.

class HasKeyConstraint c a where Source

Interface of inference rule for `KeyConstraint`

proof object.

keyConstraint :: KeyConstraint c a Source

Infer `ColumnConstraint`

proof object.

derivedCompositePrimary :: HasColumnConstraint Primary r => PrimaryConstraint r Source

Inferred `PrimaryConstraint`

proof object.
Record type `r`

has composite primary key which is derived `r`

has single column primary key.

derivedUniqueConstraint :: HasKeyConstraint Primary r => UniqueConstraint r Source

Inferred `UniqueConstraint`

proof object.
Record type `r`

has unique key which is derived `r`

has primary key.