From a3c014b1c938fd16ff6d1f8eadeea3effd3a5a90 Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sat, 3 Jul 2021 16:55:44 +0100 Subject: Split MySQLRecordSet data away from interface --- lib/input/mysqlRecordSet.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'lib/input/mysqlRecordSet.cpp') diff --git a/lib/input/mysqlRecordSet.cpp b/lib/input/mysqlRecordSet.cpp index 9eec30f..33c5e6f 100644 --- a/lib/input/mysqlRecordSet.cpp +++ b/lib/input/mysqlRecordSet.cpp @@ -11,9 +11,8 @@ // IWYU pragma: no_include namespace MyGrate::Input { - MySQLRecordSet::MySQLRecordSet(StmtPtr s) : - stmt {std::move(s)}, stmtres {nullptr, nullptr}, fields(mysql_stmt_field_count(stmt.get())), - extras(fields.size()) + MySQLData::MySQLData(StmtPtr s) : + stmt {std::move(s)}, fields(mysql_stmt_field_count(stmt.get())), extras(fields.size()) { auto getBind = [](const MYSQL_FIELD & f, MYSQL_BIND & b) -> std::unique_ptr { switch (f.type) { @@ -72,6 +71,16 @@ namespace MyGrate::Input { extras[i] = getBind(fieldDefs[i], fields[i]); } verify(!mysql_stmt_bind_result(stmt.get(), fields.data()), "Store result error", stmt->mysql); + } + + std::size_t + MySQLData::columns() const + { + return fields.size(); + } + + MySQLRecordSet::MySQLRecordSet(StmtPtr s) : MySQLData(std::move(s)), stmtres {nullptr, nullptr} + { verify(!mysql_stmt_store_result(stmt.get()), "Store result error", stmt->mysql); stmtres = {stmt.get(), mysql_stmt_free_result}; } @@ -85,7 +94,7 @@ namespace MyGrate::Input { std::size_t MySQLRecordSet::columns() const { - return fields.size(); + return MySQLData::columns(); } DbValue -- cgit v1.2.3