From 5b35b03a1a6c8d9fa2e6eb8a50a3b199458a3082 Mon Sep 17 00:00:00 2001 From: Abhinav Sarkar Date: Thu, 7 Jan 2016 03:01:50 +0530 Subject: [PATCH] Adds an option to choose if fact tables are persistent. --- app/Main.hs | 2 +- app/Ringo/InputParser.hs | 1 + src/Ringo/Types.hs | 9 +++++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/Main.hs b/app/Main.hs index a1ce7e2..f5f769c 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -53,7 +53,7 @@ writeFiles outputDir env@Env{..} = do where dimTables = [ (fact, extractDimensionTables env fact) | fact <- envFacts ] - factTables = [ (fact, extractFactTable env fact) | fact <- envFacts ] + factTables = [ (fact, extractFactTable env fact) | fact <- envFacts, factTablePersistent fact ] dimTableDefnSQLs = [ (Create, tableName table, unlines . map sqlStr $ dimensionTableDefnSQL env table) | (_, tabs) <- dimTables diff --git a/app/Ringo/InputParser.hs b/app/Ringo/InputParser.hs index 40b9382..f6db53c 100644 --- a/app/Ringo/InputParser.hs +++ b/app/Ringo/InputParser.hs @@ -67,6 +67,7 @@ instance FromJSON FactColumn where instance FromJSON Fact where parseJSON (Object o) = Fact <$> o .: "name" <*> o .: "tablename" + <*> o .:? "persistent" .!= True <*> o .:? "parentfacts" .!= [] <*> o .: "columns" parseJSON o = fail $ "Cannot parse fact: " ++ show o diff --git a/src/Ringo/Types.hs b/src/Ringo/Types.hs index e0a645c..999b38c 100644 --- a/src/Ringo/Types.hs +++ b/src/Ringo/Types.hs @@ -42,10 +42,11 @@ timeUnitToSeconds Day = 24 * timeUnitToSeconds Hour timeUnitToSeconds Week = 7 * timeUnitToSeconds Day data Fact = Fact - { factName :: !TableName - , factTableName :: !TableName - , factParentNames :: ![TableName] - , factColumns :: ![FactColumn] + { factName :: !TableName + , factTableName :: !TableName + , factTablePersistent :: !Bool + , factParentNames :: ![TableName] + , factColumns :: ![FactColumn] } deriving (Eq, Show) data FactColumn = DimTime !ColumnName