packages feed

project-m36-0.9.4: src/bin/TutorialD/Interpreter/Import/Base.hs

{-# LANGUAGE CPP #-}
module TutorialD.Interpreter.Import.Base where
import ProjectM36.Base
import ProjectM36.Error
import Text.URI (URI)
import Data.Text (Text)
#if __GLASGOW_HASKELL__ < 804
import Data.Monoid
#endif

-- | import data into a relation variable
data RelVarDataImportOperator = RelVarDataImportOperator RelVarName FilePath (RelVarName -> TypeConstructorMapping -> Attributes -> FilePath -> IO (Either RelationalError DatabaseContextExpr))

instance Show RelVarDataImportOperator where
  show (RelVarDataImportOperator rv path _) = "RelVarDataImportOperator " <> show rv <> " " <> path

type HashVerification = Maybe Text

-- | import data into a database context
data DatabaseContextDataImportOperator = DatabaseContextDataImportOperator URI HashVerification (URI -> HashVerification -> IO (Either RelationalError DatabaseContextExpr))

instance Show DatabaseContextDataImportOperator where
  show (DatabaseContextDataImportOperator uri hash _) =
    "DatabaseContextDataImportOperator " <> show uri <> " " <> show hash

-- perhaps create a structure to import a whole transaction graph section in the future

evalRelVarDataImportOperator :: RelVarDataImportOperator -> TypeConstructorMapping -> Attributes -> IO (Either RelationalError DatabaseContextExpr)
evalRelVarDataImportOperator (RelVarDataImportOperator relVarName path importFunc) tConsMap attrs = importFunc relVarName tConsMap attrs path 
        
evalDatabaseContextDataImportOperator :: DatabaseContextDataImportOperator -> IO (Either RelationalError DatabaseContextExpr)        
evalDatabaseContextDataImportOperator (DatabaseContextDataImportOperator uri hash importFunc) = importFunc uri hash