fixed session::update implementation

This commit is contained in:
Sascha Kühl 2025-10-12 11:04:28 +02:00
parent 399fa9a157
commit 1cda78412b
1 changed files with 9 additions and 7 deletions

View File

@ -63,7 +63,7 @@ public:
template<typename Type>
static void on_attribute(const char * /*id*/, Type &/*obj*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {}
template<class Pointer>
void on_belongs_to(const char *id, Pointer &obj, const utils::foreign_attributes &attr) {
void on_belongs_to(const char *id, Pointer &/*obj*/, const utils::foreign_attributes &/*attr*/) {
const auto it = statements_per_column_.find(id);
if (it == statements_per_column_.end()) {
return;
@ -72,7 +72,7 @@ public:
}
template<class Pointer>
void on_has_one(const char *id, Pointer &obj, const utils::foreign_attributes &attr) {
void on_has_one(const char * /*id*/, Pointer &/*obj*/, const utils::foreign_attributes &/*attr*/) {
}
template<class ContainerType>
@ -194,18 +194,20 @@ utils::result<object::object_ptr<Type>, utils::error> session::update( const obj
if (!info) {
return utils::failure(info.err());
}
using namespace matador::utils;
using namespace matador::query;
const auto col = sql::column(info->get()->prototype().primary_key()->name());
auto res = query::query::update(info->get().name())
const auto col = sql::column(info.value().get().definition().primary_key()->name());
auto res = matador::query::query::update(info->get().name())
.set(*obj)
.where(col == utils::_)
.where(col == _)
.prepare(*this);
if (!res) {
return utils::failure(res.err());
}
if (const auto insert_result = res->bind(*obj).execute(); !insert_result.is_ok()) {
return utils::failure(insert_result.err());
if (const auto update_result = res->bind(*obj).execute(); !update_result.is_ok()) {
return utils::failure(update_result.err());
}
return utils::ok(object::object_ptr{obj});
}