-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Generic KVS API @package JunkDB @version 0.1.0.0 module Database.KVS class Monad s => KVS c s k v | c -> s, c -> k, c -> v where lookup c k = accept c k (return Nothing) (return . Just) insert :: KVS c s k v => c -> k -> v -> s () lookup :: KVS c s k v => c -> k -> s (Maybe v) delete :: KVS c s k v => c -> k -> s (Maybe Bool) accept :: KVS c s k v => c -> k -> s b -> (v -> s b) -> s b class Monad s => EnumeratableKVS c s k v | c -> s, c -> k, c -> v where keys c = elemsWithKey c $= map fst elems c = elemsWithKey c $= map snd elemsWithKey c = keys c $= go where go = do { k <- await; case k of { Nothing -> return () Just k' -> do { v <- lift $ lift $ lookup c k'; case v of { Nothing -> go Just v' -> yield (k', v') >> go } } } } keys :: EnumeratableKVS c s k v => c -> Source (ResourceT s) k elems :: EnumeratableKVS c s k v => c -> Source (ResourceT s) v elemsWithKey :: EnumeratableKVS c s k v => c -> Source (ResourceT s) (k, v) class Monad s => WipableKVS c s | c -> s wipe :: WipableKVS c s => c -> s () data BucketKVS c s v BucketKVS :: ByteString -> c -> BucketKVS c s v data WrappedKVS c k' v' (s :: * -> *) k v lookupWithDefault :: (Monad s, Default v, KVS c s k v) => c -> k -> s v wrap :: KVS a s k' v' => (k -> k') -> (k' -> k) -> (v -> v') -> (v' -> v) -> a -> WrappedKVS a k' v' s k v wrapBinary :: (KVS a s ByteString ByteString, Binary k, Binary v) => a -> WrappedKVS a ByteString ByteString s k v wrapShow :: (KVS a s ByteString ByteString, Show k, Show v, Read k, Read v) => a -> WrappedKVS a ByteString ByteString s k v wrapJSON :: (KVS a s ByteString ByteString, FromJSON k, ToJSON k, FromJSON v, ToJSON v) => a -> WrappedKVS a ByteString ByteString s k v instance (Monad s, EnumeratableKVS c s k' v') => EnumeratableKVS (WrappedKVS c k' v' s k v) s k v instance (Monad s, WipableKVS c s) => WipableKVS (WrappedKVS c k' v' s k v) s instance (KVS c s k' v', Monad s) => KVS (WrappedKVS c k' v' s k v) s k v instance (Monad s, WipableKVS c s) => WipableKVS (BucketKVS c s v) s instance Monad s => KVS (BucketKVS c s v) s ByteString v module Database.Junk.FileSystem newtype FileSystemKVS FileSystemKVS :: FilePath -> FileSystemKVS fsBasePath :: FileSystemKVS -> FilePath instance WipableKVS FileSystemKVS IO instance EnumeratableKVS FileSystemKVS IO FilePath ByteString instance KVS FileSystemKVS IO FilePath ByteString module Database.Junk.Memcached connect :: HostName -> PortNumber -> Int -> Int -> IO Memcached disconnect :: Memcached -> IO () data Memcached Memcached :: Handle -> Int -> Int -> Memcached mcdServer :: Memcached -> Handle mcdExpires :: Memcached -> Int mcdFlags :: Memcached -> Int instance KVS Memcached IO ByteString ByteString