project-m36-0.2: src/lib/ProjectM36/InclusionDependency.hs
module ProjectM36.InclusionDependency where
import ProjectM36.Base
import ProjectM36.Attribute
import ProjectM36.Error
import ProjectM36.Relation
import qualified Data.Map as M
import qualified Data.Text as T
inclusionDependenciesAsRelation :: InclusionDependencies -> Either RelationalError Relation
inclusionDependenciesAsRelation incDeps =
mkRelationFromList attrs (map incDepAsAtoms (M.toList incDeps))
where
attrs = attributesFromList [Attribute "name" TextAtomType,
Attribute "sub" TextAtomType,
Attribute "super" TextAtomType
]
incDepAsAtoms (name, InclusionDependency exprA exprB) = [TextAtom name,
TextAtom (T.pack (show exprA)),
TextAtom (T.pack (show exprB))]