persistable-record-0.5.1.1: Binding between SQL database values and haskell records.

Copyright2013 Kei Hibino
LicenseBSD3
Maintainerex8k.hibino@gmail.com
Stabilityexperimental
Portabilityunknown
Safe HaskellSafe
LanguageHaskell2010

Database.Record.KeyConstraint

Contents

Description

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

Synopsis

Constraint specified by keys

data ColumnConstraint c r #

Proof object to specify table constraint for table record type r and constraint c specified by a single column.

index :: ColumnConstraint c r -> Int #

Index of key which specifies table constraint.

unsafeSpecifyColumnConstraint #

Arguments

:: Int

Key index which specify this constraint

-> ColumnConstraint c r

Result constraint proof object

Unsafely generate ColumnConstraint proof object using specified key index.

data Unique #

Constraint type. Unique key.

type UniqueColumnConstraint = ColumnConstraint Unique #

Specialized unique constraint.

data NotNull #

Constraint type. Not-null key.

Instances

type NotNullColumnConstraint = ColumnConstraint NotNull #

Specialized not-null constraint.

data Primary #

Constraint type. Primary key.

type PrimaryColumnConstraint = ColumnConstraint Primary #

Specialized primary constraint.

data KeyConstraint c r #

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

Index of key which specifies table constraint.

unsafeSpecifyKeyConstraint #

Arguments

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

Specialized unique constraint.

type PrimaryConstraint = KeyConstraint Primary #

Specialized primary constraint.

Deriviations

uniqueColumn :: PrimaryColumnConstraint r -> UniqueColumnConstraint r #

Derivation rule for UniqueColumnConstraint. Derive Unique from Primary.

notNullColumn :: PrimaryColumnConstraint r -> NotNullColumnConstraint r #

Derivation rule for NotNullColumnConstraint. Derive NotNull from Primary.

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

Derivation rule of ColumnConstraint NotNull for tuple (,) type.

unsafeSpecifyNotNullValue :: NotNullColumnConstraint a #

Unsafely generate NotNullColumnConstraint proof object of single column value.

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

Derivation rule for KeyConstraint. Derive from ColumnConstraint.

Inferences

class HasColumnConstraint c a where #

Interface of inference rule for ColumnConstraint proof object.

Minimal complete definition

columnConstraint

Methods

columnConstraint :: ColumnConstraint c a #

Infer ColumnConstraint proof object.

Instances

derivedUniqueColumnConstraint :: HasColumnConstraint Primary r => UniqueColumnConstraint r #

Inferred UniqueColumnConstraint proof object. Record type r has unique key which is derived r has primary key.

derivedNotNullColumnConstraint :: HasColumnConstraint Primary r => NotNullColumnConstraint r #

Inferred NotNullColumnConstraint proof object. Record type r has not-null key which is derived r has primary key.

class HasKeyConstraint c a where #

Interface of inference rule for KeyConstraint proof object.

Minimal complete definition

keyConstraint

Methods

keyConstraint :: KeyConstraint c a #

Infer ColumnConstraint proof object.

derivedCompositePrimary :: HasColumnConstraint Primary r => PrimaryConstraint r #

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 #

Inferred UniqueConstraint proof object. Record type r has unique key which is derived r has primary key.