packages feed

clickhouse-haskell-0.1.1.0: src/Database/ClickHouseDriver/ServerProtocol.hs

{-# LANGUAGE CPP #-}
{-# LANGUAGE OverloadedStrings #-}

-- | This module provides constants the

module Database.ClickHouseDriver.ServerProtocol where

import           Data.ByteString (ByteString)
import           Data.Vector     (Vector, fromList, (!?))


-- Name, version, revision
_HELLO :: Word
_HELLO = 0 :: Word

-- A block of data
_DATA :: Word
_DATA = 1 :: Word

-- The exception during query execution
_EXCEPTION :: Word
_EXCEPTION = 2 :: Word

-- Query execution process rows read, bytes read
_PROGRESS :: Word
_PROGRESS = 3 :: Word

-- ping response
_PONG :: Word
_PONG = 4 :: Word

-- All packets were transimitted
_END_OF_STREAM :: Word
_END_OF_STREAM = 5 :: Word

-- Packet with profiling info
_PROFILE_INFO :: Word
_PROFILE_INFO = 6 :: Word

-- A block with totals
_TOTAL :: Word
_TOTAL = 7 :: Word

-- A block with minimums and maximums
_EXTREMES :: Word
_EXTREMES = 8 :: Word

-- A response to TableStatus request
_TABLES_STATUS_RESPONSE :: Word
_TABLES_STATUS_RESPONSE = 9 :: Word

-- A System logs of the query execution
_LOG :: Word
_LOG = 10 :: Word

-- Columns' description for default values calculation
_TABLE_COLUMNS :: Word
_TABLE_COLUMNS = 11 :: Word

typeStr :: Vector ByteString
typeStr =
  fromList
    [ "Hello",
      "Data",
      "Exception",
      "Progress",
      "Pong",
      "EndOfStream",
      "ProfileInfo",
      "Totals",
      "Extremes",
      "TablesStatusResponse",
      "Log",
      "TableColumns"
    ]

toString :: Int -> ByteString
toString n = 
  case typeStr !? n of
    Nothing -> "Unknown Packet"
    Just t -> t