Safe Haskell | None |
---|---|
Language | Haskell2010 |
Columns can be required or optional and, independently, nullable or non-nullable.
A required non-nullable SqlInt4
(for example) is created with
required
and gives rise to a
TableColumns (Column SqlInt4) (Column SqlInt4)
The leftmost argument is the type of writes. When you insert or
update into this column you must give it a Column SqlInt4
(which you
can create with sqlInt4 :: Int -> Column SqlInt4
).
A required nullable SqlInt4
is created with required
and gives rise
to a
TableColumns (Column (Nullable SqlInt4)) (Column (Nullable SqlInt4))
When you insert or update into this column you must give it a Column
(Nullable SqlInt4)
, which you can create either with sqlInt4
and
toNullable :: Column a -> Column (Nullable a)
, or with null ::
Column (Nullable a)
.
An optional non-nullable SqlInt4
is created with optional
and gives
rise to a
TableColumns (Maybe (Column SqlInt4)) (Column SqlInt4)
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 SqlInt4)
. 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 SqlInt4
.
An optional nullable SqlInt4
is created with optional
and gives
rise to a
TableColumns (Maybe (Column (Nullable SqlInt4))) (Column (Nullable SqlInt4))
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 SqlInt4))
. If you provide Nothing
then the default
value will be used. Otherwise you have to provide a Just
containing
a Column (Nullable SqlInt4)
(which can be null).
- table :: String -> TableColumns writeFields viewFields -> Table writeFields viewFields
- tableWithSchema :: String -> String -> TableColumns writeFields viewFields -> Table writeFields viewFields
- data Table writerColumns viewColumns
- = Table String (TableColumns writerColumns viewColumns)
- | TableWithSchema String String (TableColumns writerColumns viewColumns)
- tableColumn :: TableColumn writeType sqlType => String -> TableColumns writeType (Column sqlType)
- optional :: String -> TableColumns (Maybe (Column a)) (Column a)
- required :: String -> TableColumns (Column a) (Column a)
- selectTable :: Default Unpackspec fields fields => Table a fields -> Select fields
- 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)
- selectTable :: Default Unpackspec fields fields => Table a fields -> Select fields
- table :: String -> TableColumns writeFields viewFields -> Table writeFields viewFields
- tableWithSchema :: String -> String -> TableColumns writeFields viewFields -> Table writeFields viewFields
- selectTableExplicit :: Unpackspec tablefields fields -> Table a tablefields -> Select fields
- queryTable :: Default Unpackspec fields fields => Table a fields -> Select fields
- queryTableExplicit :: Unpackspec tablefields fields -> Table a tablefields -> Select fields
Creating tables
:: String | Table name |
-> TableColumns writeFields viewFields | |
-> Table writeFields viewFields |
Create a table with unqualified names.
:: String | Schema name |
-> String | Table name |
-> TableColumns writeFields viewFields | |
-> Table writeFields viewFields |
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 writeType sqlType => String -> TableColumns writeType (Column sqlType) 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
:: Default Unpackspec fields fields | |
=> Table a fields | |
-> Select fields |
Example type specialization:
selectTable :: Table w (Column a, Column b) -> Select (Column a, Column b)
Assuming the makeAdaptorAndInstance
splice has been run for the
product type Foo
:
selectTable :: Table w (Foo (Column a) (Column b) (Column c)) -> Select (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
:: Default Unpackspec fields fields | |
=> Table a fields | |
-> Select fields |
Example type specialization:
selectTable :: Table w (Column a, Column b) -> Select (Column a, Column b)
Assuming the makeAdaptorAndInstance
splice has been run for the
product type Foo
:
selectTable :: Table w (Foo (Column a) (Column b) (Column c)) -> Select (Foo (Column a) (Column b) (Column c))
:: String | Table name |
-> TableColumns writeFields viewFields | |
-> Table writeFields viewFields |
Create a table with unqualified names.
:: String | Schema name |
-> String | Table name |
-> TableColumns writeFields viewFields | |
-> Table writeFields viewFields |
Create a table.
Explicit versions
:: Unpackspec tablefields fields | |
-> Table a tablefields | |
-> Select fields |
Deprecated versions
queryTable :: Default Unpackspec fields fields => Table a fields -> Select fields Source #
Use selectTable
instead. Will be deprecated in version 0.7.
queryTableExplicit :: Unpackspec tablefields fields -> Table a tablefields -> Select fields Source #
Use selectTableExplicit
instead. Will be deprecated in version
0.7.