summaryrefslogtreecommitdiff
path: root/lib/output/pq/updateDatabase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/output/pq/updateDatabase.cpp')
-rw-r--r--lib/output/pq/updateDatabase.cpp20
1 files changed, 19 insertions, 1 deletions
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 <helpers.h>
#include <input/replStream.h>
#include <memory>
+#include <output/pq/sql/selectColumns.h>
#include <output/pq/sql/selectSource.h>
+#include <output/pq/sql/selectTables.h>
#include <stdexcept>
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<TableDef>(*crecs, trecs->at(t, 0)));
+ }
+ }
EventSourceBasePtr
UpdateDatabase::getSource()
@@ -19,4 +28,13 @@ namespace MyGrate::Output::Pq {
verify<std::runtime_error>(srcrec->rows() == 1, "Wrong number of source config rows");
return (*srcrec)[0].create<Input::ReplicationStream, 7>();
}
+
+ 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<ColumnDef, 3, 1>());
+ }
+ }
+ }
}