opaleye-0.5.4.0: An SQL-generating DSL targeting PostgreSQL

Safe HaskellNone
LanguageHaskell2010

Opaleye.Table

Contents

Description

Columns can be required or optional and, independently, nullable or non-nullable.

A required non-nullable PGInt4 (for example) is created with required and gives rise to a

TableProperties (Column PGInt4) (Column PGInt4)

The leftmost argument is the type of writes. When you insert or update into this column you must give it a Column PGInt4 (which you can create with pgInt4 :: Int -> Column PGInt4).

A required nullable PGInt4 is created with required and gives rise to a

TableProperties (Column (Nullable PGInt4)) (Column (Nullable PGInt4))

When you insert or update into this column you must give it a Column (Nullable PGInt4), which you can create either with pgInt4 and toNullable :: Column a -> Column (Nullable a), or with null :: Column (Nullable a).

An optional non-nullable PGInt4 is created with optional and gives rise to a

TableProperties (Maybe (Column PGInt4)) (Column PGInt4)

When you insert or update into this column you must give it a Maybe (Column PGInt4). If you provide Nothing then the column will be omitted from the query and the default value will be used. Otherwise you have to provide a Just containing a Column PGInt4.

An optional non-nullable PGInt4 is created with optional and gives rise to a

TableProperties (Maybe (Column (Nullable PGInt4))) (Column PGInt4)

When you insert or update into this column you must give it a Maybe (Column (Nullable PGInt4)). If you provide Nothing then the default value will be used. Otherwise you have to provide a Just containing a Column (Nullable PGInt4) (which can be null).

Synopsis

Documentation

queryTable :: Default ColumnMaker columns columns => Table a columns -> Query columns Source #

Example type specialization:

queryTable :: Table w (Column a, Column b) -> Query (Column a, Column b)

Assuming the makeAdaptorAndInstance splice has been run for the product type Foo:

queryTable :: Table w (Foo (Column a) (Column b) (Column c)) -> Query (Foo (Column a) (Column b) (Column c))

required :: String -> TableProperties (Column a) (Column a) Source #

required is for columns which are not optional. You must provide them on writes.

optional :: String -> TableProperties (Maybe (Column a)) (Column a) Source #

optional is for columns that you can omit on writes, such as columns which have defaults or which are SERIAL.

Explicit versions

queryTableExplicit :: ColumnMaker tablecolumns columns -> Table a tablecolumns -> Query columns Source #

Other

data View columns Source #

data Writer columns dummy Source #

Instances

ProductProfunctor Writer Source # 

Methods

purePP :: b -> Writer a b #

(****) :: Writer a (b -> c) -> Writer a b -> Writer a c #

empty :: Writer () () #

(***!) :: Writer a b -> Writer a' b' -> Writer (a, a') (b, b') #

Profunctor Writer Source # 

Methods

dimap :: (a -> b) -> (c -> d) -> Writer b c -> Writer a d #

lmap :: (a -> b) -> Writer b c -> Writer a c #

rmap :: (b -> c) -> Writer a b -> Writer a c #

(#.) :: Coercible * c b => (b -> c) -> Writer a b -> Writer a c #

(.#) :: Coercible * b a => Writer b c -> (a -> b) -> Writer a c #

Functor (Writer a) Source # 

Methods

fmap :: (a -> b) -> Writer a a -> Writer a b #

(<$) :: a -> Writer a b -> Writer a a #

Applicative (Writer a) Source # 

Methods

pure :: a -> Writer a a #

(<*>) :: Writer a (a -> b) -> Writer a a -> Writer a b #

(*>) :: Writer a a -> Writer a b -> Writer a b #

(<*) :: Writer a a -> Writer a b -> Writer a a #

data Table writerColumns viewColumns Source #

Constructors

Table String (TableProperties writerColumns viewColumns)

Uses the default schema name ("public").

TableWithSchema String String (TableProperties writerColumns viewColumns)

Schema name ("public" by default in PostgreSQL), table name, table properties.

Instances

Functor (Table a) Source # 

Methods

fmap :: (a -> b) -> Table a a -> Table a b #

(<$) :: a -> Table a b -> Table a a #

data TableProperties writerColumns viewColumns Source #

Instances

ProductProfunctor TableProperties Source # 

Methods

purePP :: b -> TableProperties a b #

(****) :: TableProperties a (b -> c) -> TableProperties a b -> TableProperties a c #

empty :: TableProperties () () #

(***!) :: TableProperties a b -> TableProperties a' b' -> TableProperties (a, a') (b, b') #

Profunctor TableProperties Source # 

Methods

dimap :: (a -> b) -> (c -> d) -> TableProperties b c -> TableProperties a d #

lmap :: (a -> b) -> TableProperties b c -> TableProperties a c #

rmap :: (b -> c) -> TableProperties a b -> TableProperties a c #

(#.) :: Coercible * c b => (b -> c) -> TableProperties a b -> TableProperties a c #

(.#) :: Coercible * b a => TableProperties b c -> (a -> b) -> TableProperties a c #

Functor (TableProperties a) Source # 

Methods

fmap :: (a -> b) -> TableProperties a a -> TableProperties a b #

(<$) :: a -> TableProperties a b -> TableProperties a a #

Applicative (TableProperties a) Source #