Copyright | (c) 2018-2022 Tim Emiola |
---|---|
License | BSD3 |
Maintainer | Tim Emiola <tim@emio.la> |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Functions that help use Aeson to load and save JSON data using the dictionary service
Synopsis
- decodeOr :: FromJSON a => (Text -> err) -> Maybe Val -> Either err (Maybe a)
- jsonVal :: ToJSON a => a -> Val
- decodeJsonKeyKVs :: (Ord a, FromJSON a, FromJSON b) => (Text -> c) -> ValsByKey -> Either c (Map a b)
- decodeWebKeyKVs :: (Ord a, FromHttpApiData a, FromJSON b) => (Text -> c) -> ValsByKey -> Either c (Map a b)
- saveKVs :: (Ord a, ToJSON b, Monad m) => (HandleErr -> err) -> (a -> Val) -> Handle m -> Key -> Map a b -> m (Either err ())
- saveKVs' :: (Ord a, ToJSON b, Monad m) => (a -> Val) -> Handle m -> Key -> Map a b -> m (Either HandleErr ())
- saveJsonKeyKVs :: (Ord a, ToJSON a, ToJSON b, Monad m) => (HandleErr -> err) -> Handle m -> Key -> Map a b -> m (Either err ())
- saveHttpApiKVs :: (Ord a, ToHttpApiData a, ToJSON b, Monad m) => (HandleErr -> err) -> Handle m -> Key -> Map a b -> m (Either err ())
- updateHttpApiKVs :: (Ord a, ToHttpApiData a, ToJSON b, Monad m) => (HandleErr -> err) -> Handle m -> Key -> Map a b -> m (Either err ())
decode/encode support
decodeOr :: FromJSON a => (Text -> err) -> Maybe Val -> Either err (Maybe a) Source #
Decode a JSON value, transforming decode errors to type err
if they occur.
decode ValsByKey
decodeJsonKeyKVs :: (Ord a, FromJSON a, FromJSON b) => (Text -> c) -> ValsByKey -> Either c (Map a b) Source #
Decode a ValsByKey
serialized as JSON.
Both the key and value types are valid to deserialize as JSON.
decodeWebKeyKVs :: (Ord a, FromHttpApiData a, FromJSON b) => (Text -> c) -> ValsByKey -> Either c (Map a b) Source #
Decode a ValsByKey
serialized as JSON.
- The key type is deserialized as HttpApiData.
- The value type is valid to deserialize as JSON.
save ValsByKey
using a Handle
saveKVs :: (Ord a, ToJSON b, Monad m) => (HandleErr -> err) -> (a -> Val) -> Handle m -> Key -> Map a b -> m (Either err ()) Source #
saveKVs' :: (Ord a, ToJSON b, Monad m) => (a -> Val) -> Handle m -> Key -> Map a b -> m (Either HandleErr ()) Source #
saveJsonKeyKVs :: (Ord a, ToJSON a, ToJSON b, Monad m) => (HandleErr -> err) -> Handle m -> Key -> Map a b -> m (Either err ()) Source #
saveHttpApiKVs :: (Ord a, ToHttpApiData a, ToJSON b, Monad m) => (HandleErr -> err) -> Handle m -> Key -> Map a b -> m (Either err ()) Source #
updateHttpApiKVs :: (Ord a, ToHttpApiData a, ToJSON b, Monad m) => (HandleErr -> err) -> Handle m -> Key -> Map a b -> m (Either err ()) Source #
Like saveHttpApiKVs
, but updates the keys rather than completely replacing it.