cql-io-1.1.0: src/lib/Database/CQL/IO/Cluster/Discovery.hs
-- This Source Code Form is subject to the terms of the Mozilla Public
-- License, v. 2.0. If a copy of the MPL was not distributed with this
-- file, You can obtain one at http://mozilla.org/MPL/2.0/.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
module Database.CQL.IO.Cluster.Discovery where
import Data.Functor.Identity (Identity)
import Data.IP
import Data.Text (Text)
import Database.CQL.Protocol
data Peer = Peer
{ peerAddr :: !IP
, peerRPC :: !IP
-- ^ The address for the client to connect to.
, peerDC :: !Text
, peerRack :: !Text
} deriving Show
recordInstance ''Peer
peers :: QueryString R () (IP, IP, Text, Text)
peers = "SELECT peer, rpc_address, data_center, rack FROM system.peers"
peer :: QueryString R (Identity IP) (IP, IP, Text, Text)
peer = "SELECT peer, rpc_address, data_center, rack FROM system.peers where peer = ?"
local :: QueryString R () (Text, Text)
local = "SELECT data_center, rack FROM system.local WHERE key='local'"