edis-0.0.1.0: src/Database/Edis/Command.hs
{-# LANGUAGE DataKinds, TypeFamilies, TypeOperators, OverloadedStrings, PolyKinds #-}
module Database.Edis.Command (
-- ** Keys
module Database.Edis.Command.Key
-- ** Strings
, module Database.Edis.Command.String
-- ** Lists
, module Database.Edis.Command.List
-- ** Hashes
, module Database.Edis.Command.Hash
-- ** Sets
, module Database.Edis.Command.Set
-- ** Sorted Sets
, module Database.Edis.Command.ZSet
-- ** Server
, module Database.Edis.Command.Server
-- ** Connection
, module Database.Edis.Command.Connection
-- ** Scripting
, module Database.Edis.Command.Scripting
-- ** Pub/Sub
, module Database.Edis.Command.PubSub
-- ** Assertions on types
, start, declare, renounce
) where
import Database.Edis.Type
import Database.Edis.Command.Key
import Database.Edis.Command.String
import Database.Edis.Command.List
import Database.Edis.Command.Hash
import Database.Edis.Command.Set
import Database.Edis.Command.ZSet
import Database.Edis.Command.Server
import Database.Edis.Command.Connection
import Database.Edis.Command.Scripting
import Database.Edis.Command.PubSub
import Data.Proxy (Proxy)
import GHC.TypeLits
--------------------------------------------------------------------------------
-- Helper functions
--------------------------------------------------------------------------------
start :: Edis '[] '[] ()
start = Edis (return ())
--------------------------------------------------------------------------------
-- Declaration
--------------------------------------------------------------------------------
declare :: (KnownSymbol s, Member xs s ~ 'False)
=> Proxy s -> Proxy x -> Edis xs (Set xs s x) ()
declare _ _ = Edis $ return ()
renounce :: (KnownSymbol s, Member xs s ~ 'True)
=> Proxy s -> Edis xs (Del xs s) ()
renounce _ = Edis $ return ()