--- 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);
+ }
+ }
+
};
}