ClickHaskell-0.1.0: ClickHouse driver
Safe HaskellSafe-Inferred
LanguageHaskell2010

ClickHaskell

Synopsis

Connection

Reading and writing

data Table (name :: Symbol) (columns :: [Type]) Source #

data Columns (columns :: [Type]) Source #

Instances

Instances details
(Serializable (Columns columns), Serializable col) => Serializable (Columns (col ': columns)) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

serialize :: ProtocolRevision -> Columns (col ': columns) -> Builder Source #

Serializable (Columns ('[] :: [Type])) Source # 
Instance details

Defined in ClickHaskell.Columns

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

Column declaration

For example:

type MyColumn = Column "myColumn" ChString

Instances

Instances details
(KnownColumn (Column name (ChArray chType)), Deserializable chType, TypeError ('Text "Arrays deserialization still unsupported") :: Constraint) => DeserializableColumn (Column name (ChArray chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

(KnownColumn (Column name (LowCardinality chType)), Deserializable chType, ToChType (LowCardinality chType) chType, IsLowCardinalitySupported chType, TypeError ('Text "LowCardinality deserialization still unsupported") :: Constraint) => DeserializableColumn (Column name (LowCardinality chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

(KnownColumn (Column name (Nullable chType)), Deserializable chType) => DeserializableColumn (Column name (Nullable chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

(KnownColumn (Column name chType), Deserializable chType) => DeserializableColumn (Column name chType) Source # 
Instance details

Defined in ClickHaskell.Columns

KnownSymbol name => KnownColumn (Column name (ChArray ChString)) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name (ChArray ChString))] -> Column (GetColumnName (Column name (ChArray ChString))) (GetColumnType (Column name (ChArray ChString))) Source #

KnownSymbol name => KnownColumn (Column name ChDate) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChDate)] -> Column (GetColumnName (Column name ChDate)) (GetColumnType (Column name ChDate)) Source #

KnownSymbol name => KnownColumn (Column name ChDateTime) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChDateTime)] -> Column (GetColumnName (Column name ChDateTime)) (GetColumnType (Column name ChDateTime)) Source #

KnownSymbol name => KnownColumn (Column name ChInt128) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt128)] -> Column (GetColumnName (Column name ChInt128)) (GetColumnType (Column name ChInt128)) Source #

KnownSymbol name => KnownColumn (Column name ChInt16) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt16)] -> Column (GetColumnName (Column name ChInt16)) (GetColumnType (Column name ChInt16)) Source #

KnownSymbol name => KnownColumn (Column name ChInt32) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt32)] -> Column (GetColumnName (Column name ChInt32)) (GetColumnType (Column name ChInt32)) Source #

KnownSymbol name => KnownColumn (Column name ChInt64) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt64)] -> Column (GetColumnName (Column name ChInt64)) (GetColumnType (Column name ChInt64)) Source #

KnownSymbol name => KnownColumn (Column name ChInt8) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt8)] -> Column (GetColumnName (Column name ChInt8)) (GetColumnType (Column name ChInt8)) Source #

KnownSymbol name => KnownColumn (Column name ChString) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChString)] -> Column (GetColumnName (Column name ChString)) (GetColumnType (Column name ChString)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt128) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt128)] -> Column (GetColumnName (Column name ChUInt128)) (GetColumnType (Column name ChUInt128)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt16) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt16)] -> Column (GetColumnName (Column name ChUInt16)) (GetColumnType (Column name ChUInt16)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt32) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt32)] -> Column (GetColumnName (Column name ChUInt32)) (GetColumnType (Column name ChUInt32)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt64) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt64)] -> Column (GetColumnName (Column name ChUInt64)) (GetColumnType (Column name ChUInt64)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt8) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt8)] -> Column (GetColumnName (Column name ChUInt8)) (GetColumnType (Column name ChUInt8)) Source #

KnownSymbol name => KnownColumn (Column name ChUUID) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUUID)] -> Column (GetColumnName (Column name ChUUID)) (GetColumnType (Column name ChUUID)) Source #

(KnownSymbol name, IsChType (LowCardinality chType), IsLowCardinalitySupported chType) => KnownColumn (Column name (LowCardinality chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name (LowCardinality chType))] -> Column (GetColumnName (Column name (LowCardinality chType))) (GetColumnType (Column name (LowCardinality chType))) Source #

(KnownSymbol name, IsChType chType, IsChType (Nullable chType)) => KnownColumn (Column name (Nullable chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name (Nullable chType))] -> Column (GetColumnName (Column name (Nullable chType))) (GetColumnType (Column name (Nullable chType))) Source #

(KnownColumn (Column name (Nullable chType)), IsChType chType, Serializable chType, TypeError ('Text "LowCardinality serialization still unsupported") :: Constraint) => Serializable (Column name (LowCardinality chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

(KnownColumn (Column name (Nullable chType)), IsChType chType, Serializable chType) => Serializable (Column name (Nullable chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

serialize :: ProtocolRevision -> Column name (Nullable chType) -> Builder Source #

(KnownColumn (Column name chType), IsChType chType, Serializable chType) => Serializable (Column name chType) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

serialize :: ProtocolRevision -> Column name chType -> Builder Source #

class (IsChType (GetColumnType column), KnownSymbol (GetColumnName column)) => KnownColumn column where Source #

Minimal complete definition

mkColumn

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType column] -> Column (GetColumnName column) (GetColumnType column) Source #

Instances

Instances details
KnownSymbol name => KnownColumn (Column name (ChArray ChString)) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name (ChArray ChString))] -> Column (GetColumnName (Column name (ChArray ChString))) (GetColumnType (Column name (ChArray ChString))) Source #

KnownSymbol name => KnownColumn (Column name ChDate) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChDate)] -> Column (GetColumnName (Column name ChDate)) (GetColumnType (Column name ChDate)) Source #

KnownSymbol name => KnownColumn (Column name ChDateTime) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChDateTime)] -> Column (GetColumnName (Column name ChDateTime)) (GetColumnType (Column name ChDateTime)) Source #

KnownSymbol name => KnownColumn (Column name ChInt128) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt128)] -> Column (GetColumnName (Column name ChInt128)) (GetColumnType (Column name ChInt128)) Source #

KnownSymbol name => KnownColumn (Column name ChInt16) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt16)] -> Column (GetColumnName (Column name ChInt16)) (GetColumnType (Column name ChInt16)) Source #

KnownSymbol name => KnownColumn (Column name ChInt32) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt32)] -> Column (GetColumnName (Column name ChInt32)) (GetColumnType (Column name ChInt32)) Source #

KnownSymbol name => KnownColumn (Column name ChInt64) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt64)] -> Column (GetColumnName (Column name ChInt64)) (GetColumnType (Column name ChInt64)) Source #

KnownSymbol name => KnownColumn (Column name ChInt8) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChInt8)] -> Column (GetColumnName (Column name ChInt8)) (GetColumnType (Column name ChInt8)) Source #

KnownSymbol name => KnownColumn (Column name ChString) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChString)] -> Column (GetColumnName (Column name ChString)) (GetColumnType (Column name ChString)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt128) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt128)] -> Column (GetColumnName (Column name ChUInt128)) (GetColumnType (Column name ChUInt128)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt16) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt16)] -> Column (GetColumnName (Column name ChUInt16)) (GetColumnType (Column name ChUInt16)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt32) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt32)] -> Column (GetColumnName (Column name ChUInt32)) (GetColumnType (Column name ChUInt32)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt64) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt64)] -> Column (GetColumnName (Column name ChUInt64)) (GetColumnType (Column name ChUInt64)) Source #

KnownSymbol name => KnownColumn (Column name ChUInt8) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUInt8)] -> Column (GetColumnName (Column name ChUInt8)) (GetColumnType (Column name ChUInt8)) Source #

KnownSymbol name => KnownColumn (Column name ChUUID) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name ChUUID)] -> Column (GetColumnName (Column name ChUUID)) (GetColumnType (Column name ChUUID)) Source #

(KnownSymbol name, IsChType (LowCardinality chType), IsLowCardinalitySupported chType) => KnownColumn (Column name (LowCardinality chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name (LowCardinality chType))] -> Column (GetColumnName (Column name (LowCardinality chType))) (GetColumnType (Column name (LowCardinality chType))) Source #

(KnownSymbol name, IsChType chType, IsChType (Nullable chType)) => KnownColumn (Column name (Nullable chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

Methods

renderColumnName :: Builder Source #

renderColumnType :: Builder Source #

mkColumn :: UVarInt -> [GetColumnType (Column name (Nullable chType))] -> Column (GetColumnName (Column name (Nullable chType))) (GetColumnType (Column name (Nullable chType))) Source #

class DeserializableColumn column where Source #

Instances

Instances details
(KnownColumn (Column name (ChArray chType)), Deserializable chType, TypeError ('Text "Arrays deserialization still unsupported") :: Constraint) => DeserializableColumn (Column name (ChArray chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

(KnownColumn (Column name (LowCardinality chType)), Deserializable chType, ToChType (LowCardinality chType) chType, IsLowCardinalitySupported chType, TypeError ('Text "LowCardinality deserialization still unsupported") :: Constraint) => DeserializableColumn (Column name (LowCardinality chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

(KnownColumn (Column name (Nullable chType)), Deserializable chType) => DeserializableColumn (Column name (Nullable chType)) Source # 
Instance details

Defined in ClickHaskell.Columns

(KnownColumn (Column name chType), Deserializable chType) => DeserializableColumn (Column name chType) Source # 
Instance details

Defined in ClickHaskell.Columns

Reading

class (HasColumns hasColumns, DeserializableColumns (Columns (GetColumns hasColumns))) => ReadableFrom hasColumns record where Source #

Minimal complete definition

Nothing

Methods

deserializeColumns :: ProtocolRevision -> UVarInt -> Get [record] Source #

default deserializeColumns :: GenericReadable record hasColumns => ProtocolRevision -> UVarInt -> Get [record] Source #

readingColumns :: Builder Source #

default readingColumns :: GenericReadable record hasColumns => Builder Source #

Simple

select :: forall columns record. ReadableFrom (Columns columns) record => Connection -> ChString -> IO [record] Source #

selectFrom :: forall table record name columns. (table ~ Table name columns, KnownSymbol name, ReadableFrom table record) => Connection -> IO [record] Source #

selectFromView :: forall view record name columns parameters passedParameters. (ReadableFrom view record, KnownSymbol name, view ~ View name columns parameters, CheckParameters parameters passedParameters) => Connection -> (Parameters '[] -> Parameters passedParameters) -> IO [record] Source #

data View (name :: Symbol) (columns :: [Type]) (parameters :: [Type]) Source #

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

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

Streaming

streamSelect :: forall columns record a. (ReadableFrom (Columns columns) record, NFData a) => Connection -> ChString -> ([record] -> IO [a]) -> IO [a] Source #

streamSelectFrom :: forall table record name columns a. (table ~ Table name columns, KnownSymbol name, ReadableFrom table record, NFData a) => Connection -> ([record] -> IO [a]) -> IO [a] Source #

streamSelectFromView :: forall view record name columns parameters passedParameters a. (ReadableFrom view record, KnownSymbol name, view ~ View name columns parameters, NFData a, CheckParameters parameters passedParameters) => Connection -> (Parameters '[] -> Parameters passedParameters) -> ([record] -> IO [a]) -> IO [a] Source #

Internal

handleSelect :: forall hasColumns record a. ReadableFrom hasColumns record => Connection -> Buffer -> ([record] -> IO [a]) -> IO [a] Source #

Writing

class (HasColumns (Columns (GetColumns columns)), Serializable (Columns (GetColumns columns)), DeserializableColumns (Columns (GetColumns columns))) => WritableInto columns record where Source #

Minimal complete definition

Nothing

Methods

serializeRecords :: ProtocolRevision -> UVarInt -> [record] -> Builder Source #

default serializeRecords :: GenericWritable record (GetColumns columns) => ProtocolRevision -> UVarInt -> [record] -> Builder Source #

writingColumns :: Builder Source #

default writingColumns :: GenericWritable record (GetColumns columns) => Builder Source #

columnsCount :: UVarInt Source #

default columnsCount :: GenericWritable record (GetColumns columns) => UVarInt Source #

insertInto :: forall table record name columns. (table ~ Table name columns, WritableInto table record, KnownSymbol name) => Connection -> [record] -> IO () Source #

Ping database connection