some code refactoring and cleanup
This commit is contained in:
parent
e5072741f0
commit
36168b2e33
|
|
@ -39,64 +39,6 @@ struct session_context {
|
|||
std::shared_ptr<sql::resolver_service> resolver_service = std::make_shared<sql::resolver_service>();
|
||||
};
|
||||
|
||||
class prototype_builder final {
|
||||
public:
|
||||
explicit prototype_builder(const std::unordered_map<std::string, sql::statement> &statements_per_column)
|
||||
: statements_per_column_(statements_per_column) {
|
||||
}
|
||||
|
||||
|
||||
template<typename Type>
|
||||
Type build() const {
|
||||
Type obj;
|
||||
access::process(*this, obj);
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
template<class V>
|
||||
static void on_primary_key(const char * /*id*/, V &/*pk*/,
|
||||
const utils::primary_key_attribute & /*attr*/ = utils::default_pk_attributes) {
|
||||
}
|
||||
|
||||
static void on_revision(const char * /*id*/, uint64_t &/*rev*/) {
|
||||
}
|
||||
|
||||
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*/) {
|
||||
const auto it = statements_per_column_.find(id);
|
||||
if (it == statements_per_column_.end()) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
template<class Pointer>
|
||||
void on_has_one(const char * /*id*/, Pointer &/*obj*/, const utils::foreign_attributes &/*attr*/) {
|
||||
}
|
||||
|
||||
template<class ContainerType>
|
||||
void on_has_many(const char * /*id*/, ContainerType &, const char * /*join_column*/,
|
||||
const utils::foreign_attributes &/*attr*/) {
|
||||
}
|
||||
|
||||
template<class ContainerType>
|
||||
void on_has_many_to_many(const char * /*id*/, ContainerType &/*cont*/, const char * /*join_column*/,
|
||||
const char * /*inverse_join_column*/, const utils::foreign_attributes &/*attr*/) {
|
||||
}
|
||||
|
||||
template<class ContainerType>
|
||||
void on_has_many_to_many(const char * /*id*/, ContainerType &/*cont*/, const utils::foreign_attributes &/*attr*/) {
|
||||
}
|
||||
|
||||
private:
|
||||
const std::unordered_map<std::string, sql::statement> &statements_per_column_;
|
||||
};
|
||||
|
||||
class session final : public sql::executor {
|
||||
public:
|
||||
session(session_context &&ctx, const query::schema &scm);
|
||||
|
|
@ -125,15 +67,13 @@ public:
|
|||
utils::result<void, utils::error> drop_table() const;
|
||||
utils::result<void, utils::error> drop_table(const std::string &table_name) const;
|
||||
|
||||
[[nodiscard]] utils::result<sql::query_result<sql::record>, utils::error>
|
||||
fetch_all(const sql::query_context &q) const;
|
||||
[[nodiscard]] utils::result<sql::query_result<sql::record>, utils::error> fetch_all(const sql::query_context &q) 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<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(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;
|
||||
|
|
@ -141,9 +81,6 @@ public:
|
|||
[[nodiscard]] std::shared_ptr<sql::resolver_service> resolver() const override;
|
||||
[[nodiscard]] const query::basic_schema &schema() const;
|
||||
|
||||
private:
|
||||
friend class query_select;
|
||||
|
||||
private:
|
||||
sql::connection_pool pool_;
|
||||
mutable sql::statement_cache cache_;
|
||||
|
|
@ -226,26 +163,6 @@ utils::result<object::object_ptr<Type>, utils::error> session::insert(object::ob
|
|||
|
||||
obj.change_state(object::object_state::Persistent);
|
||||
return utils::ok(obj);
|
||||
//
|
||||
//
|
||||
//
|
||||
// const auto it = schema_.find(typeid(Type));
|
||||
// if (it == schema_.end()) {
|
||||
// return utils::failure(make_error(error_code::UnknownType, "Failed to determine requested type."));
|
||||
// }
|
||||
//
|
||||
// auto res = query::query::insert()
|
||||
// .into(it->second.name(), query::generator::columns<Type>(schema_))
|
||||
// .values(query::generator::placeholders<Type>())
|
||||
// .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());
|
||||
// }
|
||||
// return utils::ok(obj);
|
||||
}
|
||||
|
||||
class pk_object_binder final {
|
||||
|
|
|
|||
|
|
@ -82,8 +82,7 @@ public:
|
|||
|
||||
template<class EntityType>
|
||||
utils::result<std::vector<insert_step>, query_build_error> build(const object::object_ptr<EntityType> &ptr) {
|
||||
auto it = schema_.find(typeid(EntityType));
|
||||
if (it == schema_.end()) {
|
||||
if (const auto it = schema_.find(typeid(EntityType)); it == schema_.end()) {
|
||||
return utils::failure(query_build_error::UnknownType);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue