| Copyright | (c) 2018-2022 Tim Emiola | 
|---|---|
| License | BSD3 | 
| Maintainer | Tim Emiola <tim@emio.la> | 
| Safe Haskell | Safe-Inferred | 
| Language | Haskell2010 | 
KeyedVals.Handle.Aeson
Description
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.