src/Configuration.h
branchv_0
changeset 3 202ce847990c
parent 2 8a30971d285f
--- a/src/Configuration.h	Sat Dec 10 20:41:40 2022 +0100
+++ b/src/Configuration.h	Tue Dec 13 02:07:00 2022 +0100
@@ -18,7 +18,9 @@
 
 #include <vector>
 #include <iostream>
+#include <regex>
 
+#include <relpipe/common/type/typedefs.h>
 #include <relpipe/reader/typedefs.h>
 
 
@@ -30,13 +32,31 @@
 public:
 
 	enum class InsertMode {
+		DEFAULT,
 		SINGLE,
 		MULTI,
 	};
 
-	relpipe::reader::boolean_t writeHeader = true;
-	relpipe::reader::boolean_t writeTypes = false;
-	InsertMode insertMode = InsertMode::MULTI; // TODO: per-relation mode
+	class TypeCastRule {
+	public:
+
+		std::wregex attribute = std::wregex(L".*");
+		std::wregex type = std::wregex(L".*");
+		relpipe::common::type::StringX sqlType;
+	};
+
+	class RelationConfiguration {
+	public:
+		relpipe::common::type::StringX relation;
+		std::wregex relationPattern;
+		relpipe::common::type::Boolean writeDDL = true;
+		relpipe::common::type::Boolean writeDML = true;
+		relpipe::common::type::Boolean writeColumnNames = true;
+		std::vector<TypeCastRule> typeCastRules;
+		InsertMode insertMode = InsertMode::DEFAULT;
+	};
+
+	std::vector<RelationConfiguration> relationConfigurations;
 
 	virtual ~Configuration() {
 	}