1module ProjectM36.DatabaseContext where
3import qualified Data.Map as M
4import qualified Data.HashSet as HS
5import ProjectM36.DataTypes.Basic
6import ProjectM36.AtomFunctions.Basic
7import ProjectM36.DatabaseContextFunction
8import ProjectM36.Relation
10empty :: DatabaseContext
11empty = DatabaseContext { inclusionDependencies = M.empty,
12 relationVariables = M.empty,
13 notifications = M.empty,
14 atomFunctions = HS.empty,
15 dbcFunctions = HS.empty,
16 typeConstructorMapping = [] }
18-- | Remove TransactionId markers on GraphRefRelationalExpr
19stripGraphRefRelationalExpr :: GraphRefRelationalExpr -> RelationalExpr
20stripGraphRefRelationalExpr = fmap (const ())
22-- | convert an existing database context into its constituent expression.
23databaseContextAsDatabaseContextExpr :: DatabaseContext -> DatabaseContextExpr
24databaseContextAsDatabaseContextExpr context = MultipleExpr $ relVarsExprs ++ incDepsExprs ++ funcsExprs
26 relVarsExprs = map (\(name, rel) -> Assign name (stripGraphRefRelationalExpr rel)) (M.toList (relationVariables context))
27 incDepsExprs :: [DatabaseContextExpr]
28 incDepsExprs = map (uncurry AddInclusionDependency) (M.toList (inclusionDependencies context))
29 funcsExprs = [] -- map (\func -> ) (HS.toList funcs) -- there are no databaseExprs to add atom functions yet-}
31basicDatabaseContext :: DatabaseContext
32basicDatabaseContext = DatabaseContext { inclusionDependencies = M.empty,
33 relationVariables = M.fromList [("true", ExistingRelation relationTrue),
34 ("false", ExistingRelation relationFalse)],
35 atomFunctions = basicAtomFunctions,
36 dbcFunctions = basicDatabaseContextFunctions,
37 notifications = M.empty,
38 typeConstructorMapping = basicTypeConstructorMapping
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list