pass query_context to execute
This commit is contained in:
parent
99677b0e21
commit
40b163ac39
|
|
@ -31,7 +31,7 @@ public:
|
||||||
[[nodiscard]] utils::result<utils::version, utils::error> client_version() const override;
|
[[nodiscard]] utils::result<utils::version, utils::error> client_version() const override;
|
||||||
[[nodiscard]] utils::result<utils::version, utils::error> server_version() const override;
|
[[nodiscard]] utils::result<utils::version, utils::error> server_version() const override;
|
||||||
|
|
||||||
utils::result<sql::execute_result, utils::error> execute(const std::string &stmt) override;
|
utils::result<sql::execute_result, utils::error> execute(const sql::query_context &context) override;
|
||||||
utils::result<std::unique_ptr<sql::statement_impl>, utils::error> prepare(const sql::query_context &context) override;
|
utils::result<std::unique_ptr<sql::statement_impl>, utils::error> prepare(const sql::query_context &context) override;
|
||||||
utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(const sql::query_context &context) override;
|
utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(const sql::query_context &context) override;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -142,11 +142,11 @@ utils::result<std::unique_ptr<sql::statement_impl>, utils::error> postgres_conne
|
||||||
return utils::ok(std::move(s));
|
return utils::ok(std::move(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
utils::result<sql::execute_result, utils::error> postgres_connection::execute(const std::string &stmt) {
|
utils::result<sql::execute_result, utils::error> postgres_connection::execute(const sql::query_context &context) {
|
||||||
PGresult *res = PQexec(conn_, stmt.c_str());
|
PGresult *res = PQexec(conn_, context.sql.c_str());
|
||||||
|
|
||||||
if (const auto status = PQresultStatus(res); status != PGRES_COMMAND_OK && status != PGRES_TUPLES_OK) {
|
if (const auto status = PQresultStatus(res); status != PGRES_COMMAND_OK && status != PGRES_TUPLES_OK) {
|
||||||
return utils::failure(make_error(sql::error_code::FAILURE, res, conn_, "Failed to execute", stmt));
|
return utils::failure(make_error(sql::error_code::FAILURE, res, conn_, "Failed to execute", context.sql));
|
||||||
}
|
}
|
||||||
|
|
||||||
const size_t affected_rows = utils::to<size_t>(PQcmdTuples(res));
|
const size_t affected_rows = utils::to<size_t>(PQcmdTuples(res));
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ public:
|
||||||
[[nodiscard]] virtual utils::result<utils::version, utils::error> client_version() const = 0;
|
[[nodiscard]] virtual utils::result<utils::version, utils::error> client_version() const = 0;
|
||||||
[[nodiscard]] virtual utils::result<utils::version, utils::error> server_version() const = 0;
|
[[nodiscard]] virtual utils::result<utils::version, utils::error> server_version() const = 0;
|
||||||
|
|
||||||
virtual utils::result<execute_result, utils::error> execute(const std::string &stmt) = 0;
|
virtual utils::result<execute_result, utils::error> execute(const query_context &context) = 0;
|
||||||
virtual utils::result<std::unique_ptr<query_result_impl>, utils::error> fetch(const query_context &context) = 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;
|
virtual utils::result<std::unique_ptr<statement_impl>, utils::error> prepare(const query_context &context) = 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -125,7 +125,7 @@ std::string connection::type() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
utils::result<void, utils::error> connection::begin() const {
|
utils::result<void, utils::error> connection::begin() const {
|
||||||
const auto res = connection_->execute(dialect().token_at(dialect_token::Begin));
|
const auto res = connection_->execute({dialect().begin()});
|
||||||
if (res.is_error()) {
|
if (res.is_error()) {
|
||||||
return utils::failure(res.err());
|
return utils::failure(res.err());
|
||||||
}
|
}
|
||||||
|
|
@ -134,7 +134,7 @@ utils::result<void, utils::error> connection::begin() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
utils::result<void, utils::error> connection::commit() const {
|
utils::result<void, utils::error> connection::commit() const {
|
||||||
const auto res = connection_->execute(dialect().token_at(dialect_token::Commit));
|
const auto res = connection_->execute({dialect().commit()});
|
||||||
if (res.is_error()) {
|
if (res.is_error()) {
|
||||||
return utils::failure(res.err());
|
return utils::failure(res.err());
|
||||||
}
|
}
|
||||||
|
|
@ -143,7 +143,7 @@ utils::result<void, utils::error> connection::commit() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
utils::result<void, utils::error> connection::rollback() const {
|
utils::result<void, utils::error> connection::rollback() const {
|
||||||
const auto res = connection_->execute(dialect().token_at(dialect_token::Rollback));
|
const auto res = connection_->execute({dialect().rollback()});
|
||||||
if (res.is_error()) {
|
if (res.is_error()) {
|
||||||
return utils::failure(res.err());
|
return utils::failure(res.err());
|
||||||
}
|
}
|
||||||
|
|
@ -178,7 +178,7 @@ utils::result<std::unique_ptr<query_result_impl>, utils::error> connection::fetc
|
||||||
utils::result<execute_result, utils::error> connection::execute(const query_context& ctx) const {
|
utils::result<execute_result, utils::error> connection::execute(const query_context& ctx) const {
|
||||||
logger_->on_execute(ctx.sql);
|
logger_->on_execute(ctx.sql);
|
||||||
std::cout << ctx.sql << std::endl;
|
std::cout << ctx.sql << std::endl;
|
||||||
return connection_->execute(ctx.sql);
|
return connection_->execute(ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
utils::result<statement, utils::error> connection::prepare(const query_context &ctx) {
|
utils::result<statement, utils::error> connection::prepare(const query_context &ctx) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue