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 = do
  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))]