introduced execute_result

This commit is contained in:
Sascha Kühl
2026-02-10 11:57:09 +01:00
parent d9f9712487
commit 99677b0e21
28 changed files with 158 additions and 170 deletions
+2 -2
View File
@@ -130,14 +130,14 @@ public:
[[nodiscard]] utils::result<sql::query_result<sql::record>, utils::error>
fetch_all(const sql::query_context &q) const;
[[nodiscard]] utils::result<size_t, utils::error> execute(const std::string &sql) const;
[[nodiscard]] utils::result<sql::execute_result, utils::error> execute(const std::string &sql) const;
[[nodiscard]] std::vector<object::attribute> describe_table(const std::string &table_name) const;
[[nodiscard]] bool table_exists(const std::string &table_name) const;
[[nodiscard]] utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(
const sql::query_context &ctx) const override;
[[nodiscard]] utils::result<size_t, utils::error> execute(const sql::query_context &ctx) const override;
[[nodiscard]] utils::result<sql::execute_result, utils::error> execute(const sql::query_context &ctx) const override;
[[nodiscard]] utils::result<sql::statement, utils::error> prepare(const sql::query_context &ctx) override;
[[nodiscard]] std::string str(const sql::query_context &ctx) const override;
[[nodiscard]] const sql::dialect &dialect() const override;
@@ -9,6 +9,7 @@
namespace matador::sql {
class executor;
class statement;
struct execute_result;
struct query_context;
}
@@ -18,7 +19,7 @@ class executable_query : public query_intermediate {
public:
using query_intermediate::query_intermediate;
[[nodiscard]] utils::result<size_t, utils::error> execute(const sql::executor &exec) const;
[[nodiscard]] utils::result<sql::execute_result, utils::error> execute(const sql::executor &exec) const;
[[nodiscard]] utils::result<sql::statement, utils::error> prepare(sql::executor &exec) const;
[[nodiscard]] sql::query_context compile(const sql::executor &exec) const;
[[nodiscard]] std::string str(const sql::executor &exec) const;
+2 -3
View File
@@ -5,6 +5,7 @@
#include "matador/sql/abstract_sql_logger.hpp"
#include "matador/sql/connection_info.hpp"
#include "matador/sql/execute_result.hpp"
#include "matador/sql/executor.hpp"
#include "matador/sql/resolver_service.hpp"
#include "matador/sql/statement.hpp"
@@ -134,10 +135,8 @@ public:
[[nodiscard]] utils::result<bool, utils::error> exists(const std::string &schema_name, const std::string &table_name) const;
[[nodiscard]] utils::result<bool, utils::error> exists(const std::string &table_name) const;
[[nodiscard]] utils::result<size_t, utils::error> execute(const std::string &sql) const;
[[nodiscard]] utils::result<std::unique_ptr<query_result_impl>, utils::error> fetch(const query_context &ctx) const override;
[[nodiscard]] utils::result<size_t, utils::error> execute(const query_context &ctx) const override;
[[nodiscard]] utils::result<execute_result, utils::error> execute(const query_context &ctx) const override;
[[nodiscard]] utils::result<statement, utils::error> prepare(const query_context &ctx) override;
[[nodiscard]] std::string str( const query_context& ctx ) const override;
+11
View File
@@ -0,0 +1,11 @@
#ifndef MATADOR_EXECUTE_RESULT_HPP
#define MATADOR_EXECUTE_RESULT_HPP
#include <vector>
namespace matador::sql {
struct execute_result {
size_t affected_rows{};
std::vector<long long> insert_ids{};
};
}
#endif // MATADOR_EXECUTE_RESULT_HPP
+2 -1
View File
@@ -11,6 +11,7 @@
namespace matador::sql {
struct query_context;
struct execute_result;
class query_result_impl;
class statement;
@@ -18,7 +19,7 @@ class executor {
public:
virtual ~executor() = default;
[[nodiscard]] virtual const class dialect& dialect() const = 0;
[[nodiscard]] virtual utils::result<size_t, utils::error> execute(const query_context &ctx) const = 0;
[[nodiscard]] virtual utils::result<execute_result, utils::error> execute(const query_context &ctx) const = 0;
[[nodiscard]] virtual utils::result<std::unique_ptr<query_result_impl>, utils::error> fetch(const query_context &ctx) const = 0;
[[nodiscard]] virtual utils::result<statement, utils::error> prepare(const query_context &ctx) = 0;
[[nodiscard]] virtual std::string str(const query_context &ctx) const = 0;
@@ -6,7 +6,7 @@
#include "matador/object/attribute.hpp"
#include "matador/sql/connection_info.hpp"
#include "matador/sql/query_context.hpp"
#include "matador/sql/execute_result.hpp"
#include "matador/utils/error.hpp"
#include "matador/utils/result.hpp"
@@ -18,6 +18,7 @@ using blob_type_t = std::vector<unsigned char>;
namespace matador::sql {
struct query_context;
class query_result_impl;
class statement_impl;
@@ -34,7 +35,7 @@ public:
[[nodiscard]] virtual utils::result<utils::version, utils::error> client_version() const = 0;
[[nodiscard]] virtual utils::result<utils::version, utils::error> server_version() const = 0;
virtual utils::result<size_t, utils::error> execute(const std::string &stmt) = 0;
virtual utils::result<execute_result, utils::error> execute(const std::string &stmt) = 0;
virtual utils::result<std::unique_ptr<query_result_impl>, utils::error> fetch(const query_context &context) = 0;
virtual utils::result<std::unique_ptr<statement_impl>, utils::error> prepare(const query_context &context) = 0;
@@ -13,6 +13,7 @@
#include <memory>
namespace matador::sql {
struct execute_result;
class query_result_impl;
class sql_error;
@@ -23,7 +24,7 @@ protected:
public:
virtual ~statement_impl() = default;
virtual utils::result<size_t, utils::error> execute(const parameter_binder& bindings) = 0;
virtual utils::result<execute_result, utils::error> execute(const parameter_binder& bindings) = 0;
virtual utils::result<std::unique_ptr<query_result_impl>, utils::error> fetch(const parameter_binder& bindings) = 0;
template < class Type >
@@ -12,7 +12,7 @@ protected:
public:
virtual ~statement_proxy() = default;
virtual utils::result<size_t, utils::error> execute(parameter_binder& bindings) = 0;
virtual utils::result<execute_result, utils::error> execute(parameter_binder& bindings) = 0;
virtual utils::result<std::unique_ptr<query_result_impl>, utils::error> fetch(parameter_binder& bindings) = 0;
template<class Type>
+1 -1
View File
@@ -71,7 +71,7 @@ public:
*
* @return The number of affected rows
*/
[[nodiscard]] utils::result<size_t, utils::error> execute() const;
[[nodiscard]] utils::result<execute_result, utils::error> execute() const;
/**
* Fetches the result of the prepared
@@ -14,8 +14,8 @@ public:
*/
primary_key_attribute() = default;
/**
* Creates primary_key_attribute instance
* with given size.
* Creates a primary_key_attribute instance with a
* given size.
*
* @param size Size of the attribute
*/
@@ -44,7 +44,7 @@ public:
[[nodiscard]] generator_type generator() const;
private:
size_t size_ = 0;
generator_type generator_ = generator_type::MANUALLY;
generator_type generator_ = generator_type::Manually;
};
const primary_key_attribute default_pk_attributes {};
@@ -3,11 +3,11 @@
namespace matador::utils {
enum class generator_type {
MANUALLY,
AUTO,
IDENTITY,
SEQUENCE,
TABLE
Manually, /**< User sets the primary key value manually. */
Auto, /**< Matador chooses the best generator type depending on the underlying dbms. */
Identity, /**< DBMS automatically generates the primary key value. */
Sequence, /**< DBMS automatically generates the primary key value by using a sequence table. */
Table /**< DBMS automatically generates the primary key value by using a table. */
};
}
#endif //PRIMARY_KEY_GENERATOR_TYPE_HPP