sqel-0.0.1.0: lib/Sqel/Column.hs
module Sqel.Column where
import Sqel.Class.Mods (AddMod (addMod), MapMod, amendMod)
import Sqel.Data.Dd (Dd (Dd), DdK (DdK), Struct (Prim))
import Sqel.Data.Mods (Nullable (Nullable), PgDefault (PgDefault), PrimaryKey (PrimaryKey), SetTableName (SetTableName))
import Sqel.Data.PgTypeName (PgTableName)
import Sqel.Data.Sql (Sql)
import Sqel.Names.Rename (Rename, rename)
import Sqel.Names.Set (SetName)
pk ::
AddMod PrimaryKey s0 s1 =>
Dd s0 ->
Dd s1
pk =
addMod PrimaryKey
class MkNullable s0 s1 | s0 -> s1 where
mkNullable :: Dd s0 -> Dd s1
instance MkNullable ('DdK sel p a 'Prim) ('DdK sel p (Maybe a) 'Prim) where
mkNullable (Dd sel p s) = Dd sel p s
nullable ::
∀ s0 s1 s2 .
AddMod Nullable s0 s1 =>
MkNullable s1 s2 =>
Dd s0 ->
Dd s2
nullable =
mkNullable .
addMod Nullable
nullableAs ::
∀ name s0 s1 s2 .
AddMod Nullable s0 s1 =>
MkNullable s1 s2 =>
Rename s2 (SetName s2 name) =>
Dd s0 ->
Dd (SetName s2 name)
nullableAs =
rename . nullable
tableName ::
∀ s0 s1 .
MapMod SetTableName s0 s1 =>
PgTableName ->
Dd s0 ->
Dd s1
tableName name =
amendMod (SetTableName name)
pgDefault ::
AddMod PgDefault s0 s1 =>
Sql ->
Dd s0 ->
Dd s1
pgDefault v =
addMod (PgDefault v)