src/SqlHandler.h
branchv_0
changeset 34 24c05e69d68f
parent 33 86ceb97db7de
child 36 91cb012d779a
--- a/src/SqlHandler.h	Sat May 23 23:58:50 2020 +0200
+++ b/src/SqlHandler.h	Mon May 25 19:36:06 2020 +0200
@@ -39,6 +39,7 @@
 #include "SqlInputScanner.h"
 #include "PreparedStatement.h"
 #include "Connection.h"
+#include "DriverManager.h"
 
 namespace relpipe {
 namespace tr {
@@ -54,6 +55,7 @@
 	Configuration configuration;
 	boolean_t fileAlreadyExisted = false;
 	writer::RelationalWriter* relationalWriter;
+	DriverManager* driverManager;
 	std::wstring_convert<codecvt_utf8<wchar_t>> convertor; // TODO: support also other encodings
 	vector<AttributeMetadata> currentReaderMetadata;
 	integer_t currentAttributeIndex = 0;
@@ -156,7 +158,7 @@
 
 public:
 
-	SqlHandler(writer::RelationalWriter* relationalWriter, Configuration& configuration) : relationalWriter(relationalWriter), configuration(configuration) {
+	SqlHandler(writer::RelationalWriter* relationalWriter, DriverManager* driverManager, Configuration& configuration) : relationalWriter(relationalWriter), driverManager(driverManager), configuration(configuration) {
 		std::string file;
 		if (configuration.file.size()) {
 			file = convertor.to_bytes(configuration.file);
@@ -270,6 +272,18 @@
 		} // else: we had no file, everything was in memory
 	}
 
+	static void listDataSources(writer::RelationalWriter* relationalWriter, DriverManager* driverManager) {
+		relationalWriter->startRelation(L"data_source",{
+			{L"name", writer::TypeId::STRING},
+			{L"description", writer::TypeId::STRING}
+		}, true);
+
+		for (DriverManager::DataSource ds : driverManager->getDataSources()) {
+			relationalWriter->writeAttribute(ds.name);
+			relationalWriter->writeAttribute(ds.description);
+		}
+	}
+
 };
 
 }