packages feed

algebra-sql-0.1.0.0: src/Database/Algebra/SQL/Materialization/Util.hs

module Database.Algebra.SQL.Materialization.Util
    ( Graph
    , graphFromFlatResult
    ) where

import qualified Data.MultiSet as MS

import Database.Algebra.SQL.Tile.Flatten
import qualified Database.Algebra.SQL.Query as Q
import qualified Database.Algebra.SQL.Materialization.Graph as G

-- | The used graph.
type Graph = G.Graph Q.SelectStmt

-- | Generate a graph from tiles.
graphFromFlatResult :: [(Int, FlatTile Int)]
                    -> Graph
graphFromFlatResult enumTiles =
    G.mkGraph $ map f enumTiles
  where f (identifier, (t, ds)) = (t, identifier, MS.toList ds)