{-# 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 ()