Safe Haskell | None |
---|---|
Language | Haskell2010 |
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
TableColumns (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
TableColumns (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
TableColumns (Maybe (Column PGInt4)) (Column PGInt4)
Optional columns are those that can be omitted on writes, such as
those that have DEFAULT
s or those that are SERIAL
.
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 nullable PGInt4
is created with optional
and gives
rise to a
TableColumns (Maybe (Column (Nullable PGInt4))) (Column (Nullable PGInt4))
Optional columns are those that can be omitted on writes, such as
those that have DEFAULT
s or those that are SERIAL
.
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).
- table :: String -> TableColumns writeColumns viewColumns -> Table writeColumns viewColumns
- tableWithSchema :: String -> String -> TableColumns writeColumns viewColumns -> Table writeColumns viewColumns
- data Table writerColumns viewColumns
- = Table String (TableColumns writerColumns viewColumns)
- | TableWithSchema String String (TableColumns writerColumns viewColumns)
- tableColumn :: TableColumn a b => String -> TableColumns a (Column b)
- optional :: String -> TableColumns (Maybe (Column a)) (Column a)
- required :: String -> TableColumns (Column a) (Column a)
- queryTable :: Default Unpackspec columns columns => Table a columns -> Query columns
- type TableColumns = TableProperties
- data View columns
- data Writer columns dummy
- data Table writerColumns viewColumns
- = Table String (TableColumns writerColumns viewColumns)
- | TableWithSchema String String (TableColumns writerColumns viewColumns)
- queryTable :: Default Unpackspec columns columns => Table a columns -> Query columns
- table :: String -> TableColumns writeColumns viewColumns -> Table writeColumns viewColumns
- tableWithSchema :: String -> String -> TableColumns writeColumns viewColumns -> Table writeColumns viewColumns
- queryTableExplicit :: Unpackspec tablecolumns columns -> Table a tablecolumns -> Query columns
Creating tables
:: String | Table name |
-> TableColumns writeColumns viewColumns | |
-> Table writeColumns viewColumns |
Create a table with unqualified names.
:: String | Schema name |
-> String | Table name |
-> TableColumns writeColumns viewColumns | |
-> Table writeColumns viewColumns |
Create a table.
data Table writerColumns viewColumns Source #
Table String (TableColumns writerColumns viewColumns) | For unqualified table names. Do not use the constructor. It is internal and will be deprecated in version 0.7. |
TableWithSchema String String (TableColumns writerColumns viewColumns) | Schema name, table name, table properties. Do not use the constructor. It is internal and will be deprecated in version 0.7. |
tableColumn :: TableColumn a b => String -> TableColumns a (Column b) Source #
optional :: String -> TableColumns (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.
Querying tables
queryTable :: Default Unpackspec 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))
Other
type TableColumns = TableProperties Source #
The new name for TableColumns
which will replace
TableColumn
in version 0.7.
Deprecated
data Writer columns dummy Source #
Internal only. Do not use. Writer
will be deprecated in
version 0.7.
data Table writerColumns viewColumns Source #
Table String (TableColumns writerColumns viewColumns) | For unqualified table names. Do not use the constructor. It is internal and will be deprecated in version 0.7. |
TableWithSchema String String (TableColumns writerColumns viewColumns) | Schema name, table name, table properties. Do not use the constructor. It is internal and will be deprecated in version 0.7. |
Module reexport
queryTable :: Default Unpackspec 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))
:: String | Table name |
-> TableColumns writeColumns viewColumns | |
-> Table writeColumns viewColumns |
Create a table with unqualified names.
:: String | Schema name |
-> String | Table name |
-> TableColumns writeColumns viewColumns | |
-> Table writeColumns viewColumns |
Create a table.
Explicit versions
queryTableExplicit :: Unpackspec tablecolumns columns -> Table a tablecolumns -> Query columns Source #