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

Portabilityunknown
Stabilityexperimental
Maintainerex8k.hibino@gmail.com
Safe HaskellSafe-Inferred

Database.Record.Persistable

Contents

Description

This module defines interfaces between Haskell type and list of SQL type.

Synopsis

Specify SQL type

data PersistableSqlType q Source

Proof object to specify type q is SQL type

runPersistableNullValue :: PersistableSqlType q -> qSource

Null value of SQL type q.

unsafePersistableSqlTypeFromNullSource

Arguments

:: q

SQL null value of SQL type q

-> PersistableSqlType q

Result proof object

Unsafely generate PersistableSqlType proof object from specified SQL null value which type is q.

Specify record width

data PersistableRecordWidth a Source

Proof object to specify width of Haskell type a when converting to SQL type list.

runPersistableRecordWidth :: PersistableRecordWidth a -> IntSource

Get width Int value of record type a.

unsafePersistableRecordWidthSource

Arguments

:: Int

Specify width of Haskell type a

-> PersistableRecordWidth a

Result proof object

Unsafely generate PersistableRecordWidth proof object from specified width of Haskell type a.

unsafeValueWidth :: PersistableRecordWidth aSource

Unsafely generate PersistableRecordWidth proof object for Haskell type a which is single column type.

maybeWidth :: PersistableRecordWidth a -> PersistableRecordWidth (Maybe a)Source

Derivation rule of PersistableRecordWidth from from Haskell type a into for Haskell type Maybe a.

Bidirectional conversion between single column type and SQL type

data PersistableSqlValue q a Source

Proof object to specify value type a is convertible with SQL type q

persistableSqlValue :: PersistableSqlType q -> (q -> a) -> (a -> q) -> PersistableSqlValue q aSource

Axiom of PersistableSqlValue for SQL type q and Haskell type a.

toValueSource

Arguments

:: PersistableSqlValue q a

Proof object which has capability to convert

-> q

SQL type

-> a

Haskell type

Run PersistableSqlValue proof object. Convert from SQL type q into Haskell type a.

fromValueSource

Arguments

:: PersistableSqlValue q a

Proof object which has capability to convert

-> a

Haskell type

-> q

SQL type

Run PersistableSqlValue proof object. Convert from Haskell type a into SQL type q.

Inference rules for proof objects

class Eq q => PersistableType q whereSource

Interface of inference rule for PersistableSqlType proof object

sqlNullValue :: PersistableType q => qSource

Inferred Null value of SQL type.

class PersistableType q => PersistableValue q a whereSource

Interface of inference rule for PersistableSqlValue proof object

fromSql :: PersistableValue q a => q -> aSource

Run inferred PersistableSqlValue proof object. Convert from SQL type q into Haskell type a.

toSql :: PersistableValue q a => a -> qSource

Run inferred PersistableSqlValue proof object. Convert from Haskell type a into SQL type q.

class PersistableWidth a whereSource

Interface of inference rule for PersistableRecordWidth proof object

Instances

PersistableWidth Bool 
PersistableWidth Char 
PersistableWidth Int8 
PersistableWidth Int16 
PersistableWidth Int32 
PersistableWidth Int64 
PersistableWidth String 
PersistableWidth ()

Inference rule of PersistableRecordWidth for Haskell unit () type. Derive from axiom.

PersistableWidth a => PersistableWidth (Maybe a)

Inference rule of PersistableRecordWidth proof object for Maybe type.

(PersistableWidth a, PersistableWidth b) => PersistableWidth (a, b)

Inference rule of PersistableRecordWidth proof object for tuple (a, b) type.

derivedWidth :: PersistableWidth a => (PersistableRecordWidth a, Int)Source

Pass type parameter and inferred width value.