Copyright | 2017-2018 Kei Hibino |
---|---|
License | BSD3 |
Maintainer | [email protected] |
Stability | experimental |
Portability | unknown |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Database.Relational.Sequence
Description
This module provides structures about sequence tables.
Synopsis
- data Sequence s i
- seqTable :: Sequence s i -> Table s
- seqExtract :: Sequence s i -> s -> i
- seqKey :: Sequence s i -> Pi s i
- seqRelation :: TableDerivable s => Sequence s i -> Relation () s
- unsafeSpecifySequence :: TableDerivable s => (s -> i) -> Pi s i -> Sequence s i
- data SeqBinding r s i
- boundTable :: SeqBinding r s i -> Table r
- boundKey :: SeqBinding r s i -> Pi r i
- boundSequence :: SeqBinding r s i -> Sequence s i
- unsafeSpecifyBinding :: (TableDerivable r, SequenceDerivable s i) => Pi r i -> SeqBinding r s i
- primaryBinding :: (TableDerivable r, SequenceDerivable s i, HasConstraintKey Primary r i) => SeqBinding r s i
- class TableDerivable s => SequenceDerivable s i | s -> i where
- derivedSequence :: Sequence s i
- class (TableDerivable r, SequenceDerivable s i) => Binding r s i | r -> s where
- binding :: SeqBinding r s i
- 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, LiteralSQL i) => Config -> i -> Sequence s i -> Update ()
- updateNumber :: (PersistableWidth s, Integral i, LiteralSQL i) => i -> Sequence s i -> Update ()
Documentation
Basic record to express sequence-table. actual sequence-table is a table which has only one column of integer type.
seqExtract :: Sequence s i -> s -> i Source #
sequence number selector for sequence record
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.
data SeqBinding r s i Source #
Record to express binding between normal-table and sequence-table.
boundTable :: SeqBinding r s i -> Table r Source #
normal-table bound to sequence-table
boundKey :: SeqBinding r s i -> Pi r i Source #
sequence key projection for bound record
boundSequence :: SeqBinding r s i -> Sequence s i Source #
sequence table record
unsafeSpecifyBinding :: (TableDerivable r, SequenceDerivable s i) => Pi r i -> SeqBinding r s i Source #
Unsafely specify binding between normal-table and sequence-table.
primaryBinding :: (TableDerivable r, SequenceDerivable s i, HasConstraintKey Primary r i) => SeqBinding r s i Source #
Derive binding using primary key.
class TableDerivable s => SequenceDerivable s i | s -> i where Source #
Sequence
derivation rule
Methods
derivedSequence :: Sequence s i Source #
class (TableDerivable r, SequenceDerivable s i) => Binding r s i | r -> s where Source #
Minimal complete definition
Nothing
Methods
binding :: SeqBinding r s i Source #
default binding :: HasConstraintKey Primary r i => SeqBinding r s i Source #
Sequence number type for record type r
Instances
Show i => Show (Number r i) Source # | |
Eq i => Eq (Number r i) Source # | |
Ord i => Ord (Number r i) Source # | |
Defined in Database.Relational.Sequence |
unsafeSpecifyNumber :: Binding r s i => i -> Number r i Source #
Unsafely specify sequence number.
extractNumber :: Number r i -> i Source #
Get untyped sequence number.
Arguments
:: (i -> r) | sequence number should be passed to proper field of record |
-> Number r i | |
-> r |
Unsafely apply sequence number.
Arguments
:: 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.
Arguments
:: (PersistableWidth s, Integral i, LiteralSQL i) | |
=> Config | |
-> i | sequence number to set. expect not SQL injectable. |
-> Sequence s i | sequence table |
-> Update () |
Update statement for sequence table
Arguments
:: (PersistableWidth s, Integral i, LiteralSQL i) | |
=> i | sequence number to set. expect not SQL injectable. |
-> Sequence s i | sequence table |
-> Update () |
Update statement for sequence table