sqel-0.0.1.0: Guided derivation for Hasql statements
Safe HaskellSafe-Inferred
LanguageHaskell2010

Sqel.Sum

Documentation

type family SumFields' (fields :: [ConstructorInfo]) (ass :: [[Type]]) :: [ProductField] where ... Source #

Equations

SumFields' '[] '[] = '[] 
SumFields' ('Record name fields ': cons) (as ': ass) = 'ProductField name (ConCol name 'True (RecordFields fields as) as) ': SumFields' cons ass 
SumFields' ('Constructor name ': cons) (as ': ass) = 'ProductField name (ConCol name 'False (ConstructorFields name 0 as) as) ': SumFields' cons ass 
SumFields' ('Infix conName _ _ ': _) _ = TypeError ("Infix constructor not supported: " <> conName) 

type family SumFields (info :: DatatypeInfo) (ass :: [[Type]]) :: [ProductField] where ... Source #

Equations

SumFields ('ADT _ _ cons _) ass = SumFields' cons ass 
SumFields info _ = TypeError ("SumFields:" % info) 

class DdType s ~ a => SumWith a isel imods arg s | a isel imods arg -> s where Source #

Methods

sumWith :: Dd ('DdK isel imods Int64 'Prim) -> arg -> Dd s Source #

Instances

Instances details
(b ~ a, CompName a ('TSel prefix name), fields ~ SumFields (GDatatypeInfoOf a) (GCode a), meta ~ MetaFor "sum type" ('ShowType a) "sum", CompColumn meta fields a arg s) => SumWith b isel imods arg ('DdK 'SelAuto (NoMods :: [Type]) a ('Comp ('TSel prefix name) 'Sum 'Nest ('DdK isel imods Int64 'Prim ': s))) Source # 
Instance details

Defined in Sqel.Sum

Methods

sumWith :: Dd ('DdK isel imods Int64 'Prim) -> arg -> Dd ('DdK 'SelAuto NoMods a ('Comp ('TSel prefix name) 'Sum 'Nest ('DdK isel imods Int64 'Prim ': s))) Source #

class DdType s ~ a => Sum a arg s | a arg -> s where Source #

Methods

sum :: arg -> Dd s Source #

Instances

Instances details
(b ~ a, CompName a ('TSel prefix name), IndexName 'DefaultPrefix name iname, fields ~ SumFields (GDatatypeInfoOf a) (GCode a), meta ~ MetaFor "sum type" ('ShowType a) "sum", CompColumn meta fields a arg s) => Sum b arg ('DdK 'SelAuto (NoMods :: [Type]) a ('Comp ('TSel prefix name) 'Sum 'Nest (IndexColumn name ': s))) Source # 
Instance details

Defined in Sqel.Sum

Methods

sum :: arg -> Dd ('DdK 'SelAuto NoMods a ('Comp ('TSel prefix name) 'Sum 'Nest (IndexColumn name ': s))) Source #

sumAs :: forall (name :: Symbol) (a :: Type) (s :: DdK) (arg :: Type). Sum a arg s => Rename s (SetName s name) => arg -> Dd (SetName s name) Source #

mergeSum :: forall (a :: Type) (s :: DdK) (arg :: Type). Sum a arg s => arg -> Dd (Merge s) Source #

class DdType s ~ a => ConColumn a arg s | a arg -> s where Source #

Methods

con :: arg -> Dd s Source #

Instances

Instances details
(a ~ ConCol name record fields as, MkTSel ('TSel 'DefaultPrefix name), meta ~ MetaFor "constructor" ('Text name) "con", CompColumn meta fields a arg s) => ConColumn a arg ('DdK 'SelAuto (NoMods :: [Type]) (ConCol name record fields as) ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Nest s)) Source # 
Instance details

Defined in Sqel.Sum

Methods

con :: arg -> Dd ('DdK 'SelAuto NoMods (ConCol name record fields as) ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Nest s)) Source #

conAs :: forall (name :: Symbol) (a :: Type) (s :: DdK) (arg :: Type). ConColumn a arg s => Rename s (SetName s name) => arg -> Dd (SetName s name) Source #

type family Con1Fields (con :: Type) :: [ProductField] where ... Source #

Equations

Con1Fields (ConCol _ 'True '[f] _) = '[f] 
Con1Fields (ConCol name 'False '['ProductField _ a] _) = '['ProductField name a] 

class DdType s ~ a => Con1Column a arg s | a arg -> s where Source #

Methods

con1 :: arg -> Dd s Source #

Instances

Instances details
(a ~ ConCol name record fields as, TypeName 'DefaultPrefix name tname, meta ~ MetaFor "constructor" ('Text name) "con1", CompColumn meta (Con1Fields a) a arg s) => Con1Column a arg ('DdK 'SelAuto (NoMods :: [Type]) (ConCol name record fields as) ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Merge s)) Source # 
Instance details

Defined in Sqel.Sum

Methods

con1 :: arg -> Dd ('DdK 'SelAuto NoMods (ConCol name record fields as) ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Merge s)) Source #

type family RenameCon1 (name :: Symbol) (a :: Type) :: Type where ... Source #

Equations

RenameCon1 name (ConCol _ record '['ProductField _ a] as) = ConCol name record '['ProductField name a] as 
RenameCon1 _ a = TypeError ("RenameCon1:" % a) 

class DdType s ~ a => Con1AsColumn name a arg s | name a arg -> s where Source #

Methods

con1As :: arg -> Dd s Source #

Instances

Instances details
(a ~ ConCol _name record _fields as, TypeName 'DefaultPrefix name tname, fields ~ Con1Fields (RenameCon1 name a), meta ~ MetaFor "constructor" ('Text name) "con1As", CompColumn meta fields a arg s) => Con1AsColumn (name :: Symbol) a arg ('DdK 'SelAuto (NoMods :: [Type]) a ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Merge s)) Source # 
Instance details

Defined in Sqel.Sum

Methods

con1As :: arg -> Dd ('DdK 'SelAuto NoMods a ('Comp ('TSel 'DefaultPrefix name) ('Prod ('Con as)) 'Merge s)) Source #

class SetIndexPrefix prefix s0 s1 | prefix s0 -> s1 where Source #

Methods

setIndexPrefix :: Dd s0 -> Dd s1 Source #

Instances

Instances details
IndexName ('SelPrefix prefix) tpe iname => SetIndexPrefix prefix ('DdK sel mods a ('Comp tsel 'Sum i ('DdK ('SelIndex oldPrefix tpe) (NoMods :: [Type]) Int64 'Prim ': cons))) ('DdK sel mods a ('Comp tsel 'Sum i (IndexColumnWith ('SelPrefix prefix) tpe ': cons))) Source # 
Instance details

Defined in Sqel.Sum

Methods

setIndexPrefix :: Dd ('DdK sel mods a ('Comp tsel 'Sum i ('DdK ('SelIndex oldPrefix tpe) NoMods Int64 'Prim ': cons))) -> Dd ('DdK sel mods a ('Comp tsel 'Sum i (IndexColumnWith ('SelPrefix prefix) tpe ': cons))) Source #

indexPrefix :: forall prefix s0 s1. SetIndexPrefix prefix s0 s1 => Dd s0 -> Dd s1 Source #