module DataFrame.Transform.Serialize (
encodeTransform,
decodeTransform,
saveTransformToFile,
loadTransformFromFile,
) where
import qualified Data.Aeson as Aeson
import DataFrame.Expr.Serialize (
decodeNamedExprs,
encodeNamedExprs,
loadPipelineFromFile,
savePipelineToFile,
)
import DataFrame.Transform (Transform (..))
encodeTransform :: Transform -> Either String Aeson.Value
encodeTransform :: Transform -> Either String Value
encodeTransform = [NamedExpr] -> Either String Value
encodeNamedExprs ([NamedExpr] -> Either String Value)
-> (Transform -> [NamedExpr]) -> Transform -> Either String Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transform -> [NamedExpr]
transformOutputs
decodeTransform :: Aeson.Value -> Either String Transform
decodeTransform :: Value -> Either String Transform
decodeTransform = ([NamedExpr] -> Transform)
-> Either String [NamedExpr] -> Either String Transform
forall a b. (a -> b) -> Either String a -> Either String b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [NamedExpr] -> Transform
Transform (Either String [NamedExpr] -> Either String Transform)
-> (Value -> Either String [NamedExpr])
-> Value
-> Either String Transform
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Value -> Either String [NamedExpr]
decodeNamedExprs
saveTransformToFile :: FilePath -> Transform -> IO (Either String ())
saveTransformToFile :: String -> Transform -> IO (Either String ())
saveTransformToFile String
fp = String -> [NamedExpr] -> IO (Either String ())
savePipelineToFile String
fp ([NamedExpr] -> IO (Either String ()))
-> (Transform -> [NamedExpr]) -> Transform -> IO (Either String ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transform -> [NamedExpr]
transformOutputs
loadTransformFromFile :: FilePath -> IO (Either String Transform)
loadTransformFromFile :: String -> IO (Either String Transform)
loadTransformFromFile String
fp = (Either String [NamedExpr] -> Either String Transform)
-> IO (Either String [NamedExpr]) -> IO (Either String Transform)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (([NamedExpr] -> Transform)
-> Either String [NamedExpr] -> Either String Transform
forall a b. (a -> b) -> Either String a -> Either String b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [NamedExpr] -> Transform
Transform) (String -> IO (Either String [NamedExpr])
loadPipelineFromFile String
fp)