Copyright | 2017 Kei Hibino |
---|---|
License | BSD3 |
Maintainer | ex8k.hibino@gmail.com |
Stability | experimental |
Portability | unknown |
Safe Haskell | None |
Language | Haskell2010 |
This module provides structures about sequence tables.
- data Sequence s i = Sequence {
- seqTable :: Table s
- seqExtract :: s -> i
- seqKey :: Pi s i
- seqRelation :: TableDerivable s => Sequence s i -> Relation () s
- unsafeSpecifySequence :: TableDerivable s => (s -> i) -> Pi s i -> Sequence s i
- class TableDerivable s => SequenceDerivable s i | s -> i where
- class (TableDerivable r, SequenceDerivable s i) => Binding r s i | r -> s where
- fromRelation :: Binding r s i => Relation () r -> Sequence s i
- data Number r i
- unsafeSpecifyNumber :: Binding r s i => i -> Number r i
- extractNumber :: Number r i -> i
- ($$!) :: (i -> r) -> Number r i -> r
- ($$) :: Binding r s i => (i -> r) -> Number r i -> r
- updateNumber :: (PersistableWidth s, Integral i, ShowConstantTermsSQL i) => i -> Sequence s i -> Update ()
Documentation
Basic record to express sequence table
seqRelation :: TableDerivable s => Sequence s i -> Relation () s Source #
Infer Relation
of sequence table
unsafeSpecifySequence :: TableDerivable s => (s -> i) -> Pi s i -> Sequence s i Source #
Unsafely specify sequence table.
class TableDerivable s => SequenceDerivable s i | s -> i where Source #
Sequence
derivation rule
derivedSequence :: Sequence s i Source #
class (TableDerivable r, SequenceDerivable s i) => Binding r s i | r -> s where Source #
Sequence number type for record type r
unsafeSpecifyNumber :: Binding r s i => i -> Number r i Source #
Unsafely specify sequence number.
extractNumber :: Number r i -> i Source #
Get untyped sequence number.
:: (i -> r) | sequence number should be passed to proper field of record |
-> Number r i | |
-> r |
Unsafely apply sequence number.
:: Binding r s i | |
=> (i -> r) | sequence number should be passed to proper field of record |
-> Number r i | |
-> r |
Unsafely apply sequence number. Only safe to build corresponding record type.
:: (PersistableWidth s, Integral i, ShowConstantTermsSQL i) | |
=> i | sequence number to set. expect not SQL injectable. |
-> Sequence s i | sequence table |
-> Update () |
Update statement for sequence table