some code refactoring and cleanup

This commit is contained in:
sascha 2026-02-18 15:44:33 +01:00
parent e5072741f0
commit 36168b2e33
2 changed files with 3 additions and 87 deletions

View File

@ -39,64 +39,6 @@ struct session_context {
std::shared_ptr<sql::resolver_service> resolver_service = std::make_shared<sql::resolver_service>(); 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 { class session final : public sql::executor {
public: public:
session(session_context &&ctx, const query::schema &scm); 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;
utils::result<void, utils::error> drop_table(const std::string &table_name) const; utils::result<void, utils::error> drop_table(const std::string &table_name) const;
[[nodiscard]] utils::result<sql::query_result<sql::record>, utils::error> [[nodiscard]] utils::result<sql::query_result<sql::record>, utils::error> fetch_all(const sql::query_context &q) const;
fetch_all(const sql::query_context &q) const;
[[nodiscard]] utils::result<sql::execute_result, utils::error> execute(const std::string &sql) 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]] std::vector<object::attribute> describe_table(const std::string &table_name) const;
[[nodiscard]] bool table_exists(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( [[nodiscard]] utils::result<std::unique_ptr<sql::query_result_impl>, utils::error> fetch(const sql::query_context &ctx) const override;
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::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]] utils::result<sql::statement, utils::error> prepare(const sql::query_context &ctx) override;
[[nodiscard]] std::string str(const sql::query_context &ctx) const 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]] std::shared_ptr<sql::resolver_service> resolver() const override;
[[nodiscard]] const query::basic_schema &schema() const; [[nodiscard]] const query::basic_schema &schema() const;
private:
friend class query_select;
private: private:
sql::connection_pool pool_; sql::connection_pool pool_;
mutable sql::statement_cache cache_; 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); obj.change_state(object::object_state::Persistent);
return utils::ok(obj); 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 { class pk_object_binder final {

View File

@ -82,8 +82,7 @@ public:
template<class EntityType> template<class EntityType>
utils::result<std::vector<insert_step>, query_build_error> build(const object::object_ptr<EntityType> &ptr) { utils::result<std::vector<insert_step>, query_build_error> build(const object::object_ptr<EntityType> &ptr) {
auto it = schema_.find(typeid(EntityType)); if (const auto it = schema_.find(typeid(EntityType)); it == schema_.end()) {
if (it == schema_.end()) {
return utils::failure(query_build_error::UnknownType); return utils::failure(query_build_error::UnknownType);
} }