added update_object_binder progress
This commit is contained in:
parent
d0e2e4340e
commit
d3483ea5c2
|
|
@ -188,6 +188,20 @@ utils::result<object::object_ptr<Type>, utils::error> session::insert( Args&&...
|
|||
return insert(new Type(std::forward<Args>(args)...));
|
||||
}
|
||||
|
||||
class update_object_binder final {
|
||||
public:
|
||||
explicit update_object_binder(sql::statement &stmt)
|
||||
: stmt_(stmt) {}
|
||||
|
||||
template < class Type >
|
||||
sql::statement& bind(Type &obj) {
|
||||
return stmt_;
|
||||
}
|
||||
private:
|
||||
sql::statement &stmt_;
|
||||
sql::object_pk_binder pk_binder_;
|
||||
};
|
||||
|
||||
template<typename Type>
|
||||
utils::result<object::object_ptr<Type>, utils::error> session::update( const object::object_ptr<Type>& obj ) {
|
||||
auto info = schema_->info<Type>();
|
||||
|
|
@ -206,7 +220,9 @@ utils::result<object::object_ptr<Type>, utils::error> session::update( const obj
|
|||
return utils::failure(res.err());
|
||||
}
|
||||
|
||||
if (const auto update_result = res->bind(*obj).execute(); !update_result.is_ok()) {
|
||||
res->bind(*obj);
|
||||
update_object_binder binder(res.value());;
|
||||
if (const auto update_result = binder.bind(*obj).execute(); !update_result.is_ok()) {
|
||||
return utils::failure(update_result.err());
|
||||
}
|
||||
return utils::ok(object::object_ptr{obj});
|
||||
|
|
|
|||
Loading…
Reference in New Issue