#ifndef MYGRATE_OUTPUT_PQ_PQCONN_H #define MYGRATE_OUTPUT_PQ_PQCONN_H #include #include #include #include #include #include #include #include namespace MyGrate { class DbValue; } namespace MyGrate::Output::Pq { class PqErr : public std::runtime_error { public: PqErr(const std::string & when, PGconn *); PqErr(const std::string & when, PGresult *); }; class PqConn : public DbConn { public: static constexpr auto paramMode {ParamMode::DollarNum}; explicit PqConn(const char * const str); virtual ~PqConn() = default; void query(const char * const) override; void query(const char * const, const std::initializer_list &) override; DbPrepStmtPtr prepare(const char * const, std::size_t nParams) override; private: static void notice_processor(void *, const char *); virtual void notice_processor(const char *) const; std::unique_ptr const conn; friend class PqPrepStmt; std::map> stmts; }; } #endif