ClickHaskell-0.1.0: ClickHouse driver
Safe HaskellSafe-Inferred
LanguageHaskell2010

ClickHaskell.Parameters

Synopsis

Documentation

data Parameter (name :: Symbol) (chType :: Type) Source #

parameters :: forall (params :: [Type]). (Parameters '[] -> Parameters params) -> Builder Source #

>>> parameters (parameter @"a3" @ChString ("a3Val" :: String) . parameter @"a2" @ChString ("a2Val" :: String))
"(a2='a2Val', a3='a3Val')"

parameter :: forall name chType parameters userType. (InterpretableParameters parameters, ToChType chType userType, KnownSymbol name, ToQueryPart chType) => userType -> Parameters parameters -> WithPassedParameter (Parameter name chType) parameters Source #

type ParametersInterpreter a = Parameters a Source #

Deprecated: This type would be removed in next major release. Use Parameters instead

newtype Parameters (parameters :: [Type]) Source #

class InterpretableParameters (ps :: [Type]) where Source #

Associated Types

type WithPassedParameter p ps = withPassedParameter | withPassedParameter -> ps p Source #

Methods

interpretParameter :: forall name chType. (KnownSymbol name, ToQueryPart chType) => chType -> Parameters ps -> WithPassedParameter (Parameter name chType) ps Source #

Instances

Instances details
InterpretableParameters ('[] :: [Type]) Source # 
Instance details

Defined in ClickHaskell.Parameters

Associated Types

type WithPassedParameter p '[] = (withPassedParameter :: Type) Source #

Methods

interpretParameter :: forall (name :: Symbol) chType. (KnownSymbol name, ToQueryPart chType) => chType -> Parameters '[] -> WithPassedParameter (Parameter name chType) '[] Source #

InterpretableParameters (x ': xs) Source # 
Instance details

Defined in ClickHaskell.Parameters

Associated Types

type WithPassedParameter p (x ': xs) = (withPassedParameter :: Type) Source #

Methods

interpretParameter :: forall (name :: Symbol) chType. (KnownSymbol name, ToQueryPart chType) => chType -> Parameters (x ': xs) -> WithPassedParameter (Parameter name chType) (x ': xs) Source #

renderParameter :: forall name chType. (KnownSymbol name, ToQueryPart chType) => chType -> Builder Source #

type family CheckParameters (tableFunctionParams :: [Type]) (passedParams :: [Type]) :: Constraint where ... Source #

Equations

CheckParameters tfs ps = (CheckDuplicates ps, GoCheckParameters tfs ps '[] True) 

type family CheckDuplicates (passedParams :: [Type]) :: Constraint where ... Source #

Equations

CheckDuplicates '[] = () 
CheckDuplicates (p ': ps) = (CheckParamDuplicates p ps, CheckDuplicates ps) 

type family CheckParamDuplicates (param :: Type) (passedParams :: [Type]) :: Constraint where ... Source #

Equations

CheckParamDuplicates _ '[] = () 
CheckParamDuplicates (Parameter name1 chType) (Parameter name2 _ ': ps) = If (name1 == name2) (TypeError (('Text "Duplicated parameter \"" :<>: 'Text name1) :<>: 'Text "\" in passed parameters")) (CheckParamDuplicates (Parameter name1 chType) ps) 

type family GoCheckParameters (tableFunctionParams :: [Type]) (passedParams :: [Type]) (acc :: [Type]) (firstRound :: Bool) :: Constraint where ... Source #

Equations

GoCheckParameters '[] '[] '[] _ = () 
GoCheckParameters (Parameter name _ ': _) '[] '[] _ = TypeError (('Text "Missing \"" :<>: 'Text name) :<>: 'Text "\" in passed parameters.") 
GoCheckParameters '[] (p ': _) _ _ = TypeError ('Text "More parameters passed than used in the view") 
GoCheckParameters '[] '[] (p ': _) _ = TypeError ('Text "More parameters passed than used in the view") 
GoCheckParameters (Parameter name1 _ ': ps) '[] (Parameter name2 _ ': ps') False = TypeError (('Text "Missing \"" :<>: 'Text name1) :<>: 'Text "\" in passed parameters") 
GoCheckParameters (p ': ps) '[] (p' ': ps') True = GoCheckParameters (p ': ps) (p' ': ps') '[] False 
GoCheckParameters (Parameter name1 _ ': ps) (Parameter name1 _ ': ps') acc b = GoCheckParameters ps ps' acc True 
GoCheckParameters (Parameter name1 chType1 ': ps) (Parameter name2 chType2 ': ps') acc b = GoCheckParameters (Parameter name1 chType1 ': ps) ps' (Parameter name2 chType2 ': acc) b