on master help sign in
project-m36/examples/DynamicDatabaseContextFunctions.hs
26 lines 1.2 kB history raw
1{-# LANGUAGE OverloadedStrings #-}
2--compile with `cabal exec ghc -- examples/DynamicDatabaseContextFunctions.hs -package project-m36`
3--load with `loaddatabasecontextfunctions "DynamicDatabaseContextFunctions" "someDBCFunctions" "examples/DynamicDatabaseContextFunctions.o"`
4module DynamicDatabaseContextFunctions where
5import ProjectM36.Base
6import ProjectM36.Relation
7import ProjectM36.DatabaseContextFunctionError
8import qualified ProjectM36.Attribute as A
10import qualified Data.Map as M
13someDBCFunctions :: [DatabaseContextFunction]
14someDBCFunctions = [DatabaseContextFunction {
15 dbcFuncName = "addtestrel",
16 dbcFuncType = [],
17 dbcFuncBody = DatabaseContextFunctionBody Nothing addTestRel
18 }]
19 where
20 addTestRel _ ctx = do
21 let attrs = A.attributesFromList [Attribute "word" TextAtomType]
22 eRel = mkRelationFromList attrs [[TextAtom "nice"]]
23 case eRel of
24 Left err -> Left (DatabaseContextFunctionUserError (show err))
25 Right testRel ->
26 pure $ ctx { relationVariables = M.insert "testRel" testRel (relationVariables ctx) }