fixed session::update implementation
This commit is contained in:
parent
399fa9a157
commit
1cda78412b
|
|
@ -63,7 +63,7 @@ public:
|
||||||
template<typename Type>
|
template<typename Type>
|
||||||
static void on_attribute(const char * /*id*/, Type &/*obj*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {}
|
static void on_attribute(const char * /*id*/, Type &/*obj*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) {}
|
||||||
template<class Pointer>
|
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);
|
const auto it = statements_per_column_.find(id);
|
||||||
if (it == statements_per_column_.end()) {
|
if (it == statements_per_column_.end()) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -72,7 +72,7 @@ public:
|
||||||
|
|
||||||
}
|
}
|
||||||
template<class Pointer>
|
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>
|
template<class ContainerType>
|
||||||
|
|
@ -194,18 +194,20 @@ utils::result<object::object_ptr<Type>, utils::error> session::update( const obj
|
||||||
if (!info) {
|
if (!info) {
|
||||||
return utils::failure(info.err());
|
return utils::failure(info.err());
|
||||||
}
|
}
|
||||||
|
using namespace matador::utils;
|
||||||
|
using namespace matador::query;
|
||||||
|
|
||||||
const auto col = sql::column(info->get()->prototype().primary_key()->name());
|
const auto col = sql::column(info.value().get().definition().primary_key()->name());
|
||||||
auto res = query::query::update(info->get().name())
|
auto res = matador::query::query::update(info->get().name())
|
||||||
.set(*obj)
|
.set(*obj)
|
||||||
.where(col == utils::_)
|
.where(col == _)
|
||||||
.prepare(*this);
|
.prepare(*this);
|
||||||
if (!res) {
|
if (!res) {
|
||||||
return utils::failure(res.err());
|
return utils::failure(res.err());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (const auto insert_result = res->bind(*obj).execute(); !insert_result.is_ok()) {
|
if (const auto update_result = res->bind(*obj).execute(); !update_result.is_ok()) {
|
||||||
return utils::failure(insert_result.err());
|
return utils::failure(update_result.err());
|
||||||
}
|
}
|
||||||
return utils::ok(object::object_ptr{obj});
|
return utils::ok(object::object_ptr{obj});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue