#ifndef MYGRATE_OUTPUT_PQ_UPDATEDATABASE_H #define MYGRATE_OUTPUT_PQ_UPDATEDATABASE_H #include "pqConn.h" #include #include #include namespace MyGrate::Input { class MySQLConn; } namespace MyGrate::Output::Pq { struct ColumnDef { ColumnDef(std::string, std::size_t, bool); std::string name; std::size_t ordinal; bool is_pk; }; using ColumnDefPtr = std::unique_ptr; class TableDef { public: TableDef(const RecordSet &, std::string_view name); std::vector columns; }; using TableDefPtr = std::unique_ptr; class ConfigError : public std::runtime_error { using std::runtime_error::runtime_error; }; class UpdateDatabase : public PqConn, public EventHandlerBase { public: UpdateDatabase(const char * const str, uint64_t source); EventSourceBasePtr getSource(); static UpdateDatabase createNew(PqConn *, const char * host, const char * un, const char * pw, unsigned short p, const char * db, int sid, const char * sc); void addTable(Input::MySQLConn *, const char * tableName); const uint64_t source; const std::string schema; private: std::map> tables; }; } #endif