From de6ac08985252e7b5d36959896386a414e590d15 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 12 Jun 2021 19:21:22 +0100 Subject: Load schema and config etc from target DB --- lib/output/pq/updateDatabase.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'lib/output/pq/updateDatabase.cpp') diff --git a/lib/output/pq/updateDatabase.cpp b/lib/output/pq/updateDatabase.cpp index 352517e..8b4d5e3 100644 --- a/lib/output/pq/updateDatabase.cpp +++ b/lib/output/pq/updateDatabase.cpp @@ -6,11 +6,20 @@ #include #include #include +#include #include +#include #include namespace MyGrate::Output::Pq { - UpdateDatabase::UpdateDatabase(const char * const str, uint64_t s) : PqConn {str}, source {s} { } + UpdateDatabase::UpdateDatabase(const char * const str, uint64_t s) : PqConn {str}, source {s} + { + auto trecs = output::pq::sql::selectTables::execute(this, source); + auto crecs = output::pq::sql::selectColumns::execute(this, source); + for (auto t {0U}; t < trecs->rows(); t++) { + tables.emplace(trecs->at(t, 0), std::make_unique(*crecs, trecs->at(t, 0))); + } + } EventSourceBasePtr UpdateDatabase::getSource() @@ -19,4 +28,13 @@ namespace MyGrate::Output::Pq { verify(srcrec->rows() == 1, "Wrong number of source config rows"); return (*srcrec)[0].create(); } + + TableDef::TableDef(const RecordSet & crecs, std::string_view name) + { + for (auto c {0U}; c < crecs.rows(); c++) { + if (crecs.at(c, 0) == name) { + columns.emplace_back(crecs[c].create()); + } + } + } } -- cgit v1.2.3