diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-07-03 16:55:44 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2021-07-03 16:55:44 +0100 |
commit | a3c014b1c938fd16ff6d1f8eadeea3effd3a5a90 (patch) | |
tree | e94a7bbf4b9dd8280ffbe133c712489ce7c40e28 /lib/input/mysqlRecordSet.h | |
parent | Support stopping the event stream reading (diff) | |
download | mygrate-a3c014b1c938fd16ff6d1f8eadeea3effd3a5a90.tar.bz2 mygrate-a3c014b1c938fd16ff6d1f8eadeea3effd3a5a90.tar.xz mygrate-a3c014b1c938fd16ff6d1f8eadeea3effd3a5a90.zip |
Split MySQLRecordSet data away from interface
Diffstat (limited to 'lib/input/mysqlRecordSet.h')
-rw-r--r-- | lib/input/mysqlRecordSet.h | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/lib/input/mysqlRecordSet.h b/lib/input/mysqlRecordSet.h index aec733e..0b4a057 100644 --- a/lib/input/mysqlRecordSet.h +++ b/lib/input/mysqlRecordSet.h @@ -12,11 +12,23 @@ namespace MyGrate::Input { class ResultData; - class MySQLRecordSet : public RecordSet { + class MySQLData { public: + using ResultDataPtr = std::unique_ptr<ResultData>; using ResPtr = std::unique_ptr<MYSQL_RES, decltype(&mysql_free_result)>; + + explicit MySQLData(StmtPtr s); + + std::size_t columns() const; + + StmtPtr stmt; + std::vector<MYSQL_BIND> fields; + std::vector<ResultDataPtr> extras; + }; + + class MySQLRecordSet : public MySQLData, public RecordSet { + public: using StmtResPtr = std::unique_ptr<MYSQL_STMT, decltype(&mysql_stmt_free_result)>; - using ResultDataPtr = std::unique_ptr<ResultData>; explicit MySQLRecordSet(StmtPtr s); @@ -27,10 +39,7 @@ namespace MyGrate::Input { DbValue at(std::size_t row, std::size_t col) const override; private: - StmtPtr stmt; StmtResPtr stmtres; - std::vector<MYSQL_BIND> fields; - std::vector<ResultDataPtr> extras; mutable std::size_t currentRow {static_cast<size_t>(-1)}; }; } |