|
|
|
@ -35,7 +35,7 @@ writeFiles :: FilePath -> Env -> IO ()
|
|
|
|
|
writeFiles outputDir env = do
|
|
|
|
|
let Settings{..} = envSettings env
|
|
|
|
|
|
|
|
|
|
forM_ sqls $ \(sqlType, table, sql) -> do
|
|
|
|
|
forM_ (makeSQLs env dimTables factTables) $ \(sqlType, table, sql) -> do
|
|
|
|
|
let dirName = outputDir </> map toLower (show sqlType)
|
|
|
|
|
createDirectoryIfMissing True dirName
|
|
|
|
|
writeFile (dirName </> Text.unpack table <.> "sql") sql
|
|
|
|
@ -50,7 +50,6 @@ writeFiles outputDir env = do
|
|
|
|
|
|
|
|
|
|
BS.writeFile (outputDir </> Text.unpack settingFactsJSONFileName) . encode $
|
|
|
|
|
[ tableName table | (_, table) <- factTables ]
|
|
|
|
|
|
|
|
|
|
where
|
|
|
|
|
facts = envFacts env
|
|
|
|
|
tables = envTables env
|
|
|
|
@ -58,13 +57,17 @@ writeFiles outputDir env = do
|
|
|
|
|
dimTables = [ (fact, extractDimensionTables env fact) | fact <- facts ]
|
|
|
|
|
factTables = [ (fact, extractFactTable env fact) | fact <- facts, factTablePersistent fact ]
|
|
|
|
|
|
|
|
|
|
dimTableDefinitionSQLs = [ (Create, tableName table, unlines . map sqlStr $ dimensionTableDefinitionSQL env table)
|
|
|
|
|
| (_, tabs) <- dimTables
|
|
|
|
|
, table <- tabs
|
|
|
|
|
, table `notElem` tables ]
|
|
|
|
|
makeSQLs :: Env -> [(Fact, [Table])] -> [(Fact, Table)] -> [(SQLType, TableName, String)]
|
|
|
|
|
makeSQLs env dimTables factTables = let
|
|
|
|
|
dimTableDefinitionSQLs =
|
|
|
|
|
[ (Create, tableName table, unlines . map sqlStr $ dimensionTableDefinitionSQL env table)
|
|
|
|
|
| (_, tabs) <- dimTables
|
|
|
|
|
, table <- tabs
|
|
|
|
|
, table `notElem` tables ]
|
|
|
|
|
|
|
|
|
|
factTableDefinitionSQLs = [ (Create , tableName table, unlines . map sqlStr $ factTableDefinitionSQL env fact table)
|
|
|
|
|
| (fact, table) <- factTables ]
|
|
|
|
|
factTableDefinitionSQLs =
|
|
|
|
|
[ (Create , tableName table, unlines . map sqlStr $ factTableDefinitionSQL env fact table)
|
|
|
|
|
| (fact, table) <- factTables ]
|
|
|
|
|
|
|
|
|
|
dimTablePopulationSQLs typ gen =
|
|
|
|
|
[ (typ , tableName table, sqlStr $ gen env fact (tableName table))
|
|
|
|
@ -74,13 +77,13 @@ writeFiles outputDir env = do
|
|
|
|
|
|
|
|
|
|
factTablePopulationSQLs typ gen = [ (typ, tableName table, unlines . map sqlStr $ gen env fact)
|
|
|
|
|
| (fact, table) <- factTables ]
|
|
|
|
|
|
|
|
|
|
sqls = concat [ dimTableDefinitionSQLs
|
|
|
|
|
, factTableDefinitionSQLs
|
|
|
|
|
, dimTablePopulationSQLs FullRefresh $ dimensionTablePopulationSQL FullPopulation
|
|
|
|
|
, dimTablePopulationSQLs IncRefresh $ dimensionTablePopulationSQL IncrementalPopulation
|
|
|
|
|
, factTablePopulationSQLs FullRefresh $ factTablePopulationSQL FullPopulation
|
|
|
|
|
, factTablePopulationSQLs IncRefresh $ factTablePopulationSQL IncrementalPopulation
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
in concat [ dimTableDefinitionSQLs
|
|
|
|
|
, factTableDefinitionSQLs
|
|
|
|
|
, dimTablePopulationSQLs FullRefresh $ dimensionTablePopulationSQL FullPopulation
|
|
|
|
|
, dimTablePopulationSQLs IncRefresh $ dimensionTablePopulationSQL IncrementalPopulation
|
|
|
|
|
, factTablePopulationSQLs FullRefresh $ factTablePopulationSQL FullPopulation
|
|
|
|
|
, factTablePopulationSQLs IncRefresh $ factTablePopulationSQL IncrementalPopulation
|
|
|
|
|
]
|
|
|
|
|
where
|
|
|
|
|
tables = envTables env
|
|
|
|
|
sqlStr = Text.unpack
|
|
|
|
|