diff --git a/ringo/src/Ringo.hs b/ringo/src/Ringo.hs index 479e449..b82c00c 100644 --- a/ringo/src/Ringo.hs +++ b/ringo/src/Ringo.hs @@ -13,10 +13,15 @@ module Ringo , factTableDefinitionSQL , dimensionTablePopulationSQL , factTablePopulationSQL + , dimensionTableDefinitionStatements + , factTableDefinitionStatements + , dimensionTablePopulationStatement + , factTablePopulationStatements ) where import Control.Monad.Reader (runReader) import Data.Text (Text) +import Database.HsSqlPpp.Syntax ( Statement ) import Ringo.Types import qualified Ringo.Extractor as E @@ -280,6 +285,9 @@ extractDependencies env = flip runReader env . E.extractDependencies dimensionTableDefinitionSQL :: Env -> Table -> [Text] dimensionTableDefinitionSQL env = flip runReader env . G.dimensionTableDefinitionSQL +dimensionTableDefinitionStatements :: Env -> Table -> [Statement] +dimensionTableDefinitionStatements env = flip runReader env . G.dimensionTableDefinitionStatements + -- | -- -- >>> let storySessionFactTable = extractFactTable env sessionFact @@ -343,6 +351,9 @@ dimensionTableDefinitionSQL env = flip runReader env . G.dimensionTableDefinitio factTableDefinitionSQL :: Env -> Fact -> Table -> [Text] factTableDefinitionSQL env fact = flip runReader env . G.factTableDefinitionSQL fact +factTableDefinitionStatements :: Env -> Fact -> Table -> [Statement] +factTableDefinitionStatements env fact = flip runReader env . G.factTableDefinitionStatements fact + -- | -- -- >>> let storySessionDimTableNames = map tableName $ extractDimensionTables env sessionFact @@ -471,6 +482,10 @@ dimensionTablePopulationSQL :: TablePopulationMode -> Env -> Fact -> TableName - dimensionTablePopulationSQL popMode env fact = flip runReader env . G.dimensionTablePopulationSQL popMode fact +dimensionTablePopulationStatement :: TablePopulationMode -> Env -> Fact -> TableName -> Statement +dimensionTablePopulationStatement popMode env fact = + flip runReader env . G.dimensionTablePopulationStatement popMode fact + -- | -- -- >>> let sqls = factTablePopulationSQL FullPopulation env sessionFact @@ -618,3 +633,7 @@ dimensionTablePopulationSQL popMode env fact = factTablePopulationSQL :: TablePopulationMode -> Env -> Fact -> [Text] factTablePopulationSQL popMode env = flip runReader env . G.factTablePopulationSQL popMode + +factTablePopulationStatements :: TablePopulationMode -> Env -> Fact -> [Statement] +factTablePopulationStatements popMode env = + flip runReader env . G.factTablePopulationStatements popMode diff --git a/ringo/src/Ringo/Generator.hs b/ringo/src/Ringo/Generator.hs index 11217a1..2b1b324 100644 --- a/ringo/src/Ringo/Generator.hs +++ b/ringo/src/Ringo/Generator.hs @@ -1,8 +1,12 @@ module Ringo.Generator ( dimensionTableDefinitionSQL , factTableDefinitionSQL + , dimensionTableDefinitionStatements + , factTableDefinitionStatements , dimensionTablePopulationSQL + , dimensionTablePopulationStatement , factTablePopulationSQL + , factTablePopulationStatements ) where import Ringo.Generator.Create diff --git a/ringo/src/Ringo/Generator/Create.hs b/ringo/src/Ringo/Generator/Create.hs index bb26f0f..0befd74 100644 --- a/ringo/src/Ringo/Generator/Create.hs +++ b/ringo/src/Ringo/Generator/Create.hs @@ -3,7 +3,11 @@ {-# LANGUAGE GADTs #-} {-# LANGUAGE NoImplicitPrelude #-} -module Ringo.Generator.Create (dimensionTableDefinitionSQL, factTableDefinitionSQL) where +module Ringo.Generator.Create ( dimensionTableDefinitionSQL + , dimensionTableDefinitionStatements + , factTableDefinitionSQL + , factTableDefinitionStatements + ) where import Prelude.Compat import Control.Monad.Reader (Reader, asks) @@ -53,6 +57,10 @@ tableDefinitionSQL table indexFn = do dimensionTableDefinitionSQL :: Table -> Reader Env [Text] dimensionTableDefinitionSQL table = tableDefinitionSQL table dimensionTableIndexStatements +dimensionTableDefinitionStatements :: Table -> Reader Env [Statement] +dimensionTableDefinitionStatements table = + (++) <$> tableDefinitionStatements table <*> dimensionTableIndexStatements table + dimensionTableIndexStatements :: Table -> Reader Env [Statement] dimensionTableIndexStatements Table {..} = do Settings {..} <- asks envSettings @@ -66,6 +74,10 @@ dimensionTableIndexStatements Table {..} = do factTableDefinitionSQL :: Fact -> Table -> Reader Env [Text] factTableDefinitionSQL fact table = tableDefinitionSQL table (factTableIndexStatements fact) +factTableDefinitionStatements :: Fact -> Table -> Reader Env [Statement] +factTableDefinitionStatements fact table = + (++) <$> tableDefinitionStatements table <*> factTableIndexStatements fact table + factTableIndexStatements :: Fact -> Table -> Reader Env [Statement] factTableIndexStatements fact table = do allDims <- extractAllDimensionTables fact diff --git a/ringo/src/Ringo/Generator/Populate/Dimension.hs b/ringo/src/Ringo/Generator/Populate/Dimension.hs index 84fa025..5782a2c 100644 --- a/ringo/src/Ringo/Generator/Populate/Dimension.hs +++ b/ringo/src/Ringo/Generator/Populate/Dimension.hs @@ -3,7 +3,10 @@ {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE GADTs #-} -module Ringo.Generator.Populate.Dimension (dimensionTablePopulationSQL) where +module Ringo.Generator.Populate.Dimension + ( dimensionTablePopulationSQL + , dimensionTablePopulationStatement + ) where import Prelude.Compat import Control.Monad.Reader (Reader, asks) diff --git a/ringo/src/Ringo/Generator/Populate/Fact.hs b/ringo/src/Ringo/Generator/Populate/Fact.hs index 1584577..2375879 100644 --- a/ringo/src/Ringo/Generator/Populate/Fact.hs +++ b/ringo/src/Ringo/Generator/Populate/Fact.hs @@ -6,7 +6,10 @@ {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE GADTs #-} -module Ringo.Generator.Populate.Fact (factTablePopulationSQL) where +module Ringo.Generator.Populate.Fact + ( factTablePopulationSQL + , factTablePopulationStatements + ) where import qualified Data.Text as Text