on ca59541 help sign in
project-m36/src/lib/ProjectM36/DatabaseContext.hs
32 lines 1.8 kB history raw
1module ProjectM36.DatabaseContext where
2import ProjectM36.Base
3import qualified Data.Map as M
4import qualified Data.HashSet as HS
5import ProjectM36.DataTypes.Basic
6import ProjectM36.AtomFunctions.Basic
7import ProjectM36.Relation
9empty :: DatabaseContext
10empty = DatabaseContext { inclusionDependencies = M.empty,
11 relationVariables = M.empty,
12 notifications = M.empty,
13 atomFunctions = HS.empty,
14 typeConstructorMapping = [] }
16-- | convert an existing database context into its constituent expression.
17databaseContextAsDatabaseContextExpr :: DatabaseContext -> DatabaseContextExpr
18databaseContextAsDatabaseContextExpr context = MultipleExpr $ relVarsExprs ++ incDepsExprs ++ funcsExprs
19 where
20 relVarsExprs = map (\(name, rel) -> Assign name (ExistingRelation rel)) (M.toList (relationVariables context))
21 incDepsExprs :: [DatabaseContextExpr]
22 incDepsExprs = map (\(name, dep) -> AddInclusionDependency name dep) (M.toList (inclusionDependencies context))
23 funcsExprs = [] -- map (\func -> ) (HS.toList funcs) -- there are no databaseExprs to add atom functions yet
25basicDatabaseContext :: DatabaseContext
26basicDatabaseContext = DatabaseContext { inclusionDependencies = M.empty,
27 relationVariables = M.fromList [("true", relationTrue),
28 ("false", relationFalse)],
29 atomFunctions = basicAtomFunctions,
30 notifications = M.empty,
31 typeConstructorMapping = basicTypeConstructorMapping
32 }