removed unused code

This commit is contained in:
Sascha Kühl 2025-02-21 07:29:41 +01:00
parent 0eb1ae9fe8
commit d0b3ce4231
10 changed files with 141 additions and 136 deletions

View File

@ -2,7 +2,7 @@ CPMAddPackage("gh:catchorg/Catch2@3.7.1")
list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras) list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras)
set(POSTGRES_CONNECTION_STRING "postgres://news:news@127.0.0.1:15432/matador") set(POSTGRES_CONNECTION_STRING "postgres://test:test123!@127.0.0.1:5432/matador")
configure_file(Connection.hpp.in ${PROJECT_BINARY_DIR}/backends/postgres/test/connection.hpp @ONLY IMMEDIATE) configure_file(Connection.hpp.in ${PROJECT_BINARY_DIR}/backends/postgres/test/connection.hpp @ONLY IMMEDIATE)

View File

@ -78,7 +78,7 @@ struct job {
}; };
unsigned int id{}; unsigned int id{};
matador::object::object_ptr<payload> payload; matador::object::object_ptr<payload> data;
std::string type; std::string type;
std::string description; std::string description;
job_state state; job_state state;
@ -88,7 +88,7 @@ struct job {
void process( Operator& op ) { void process( Operator& op ) {
namespace field = matador::access; namespace field = matador::access;
field::primary_key( op, "id", id ); field::primary_key( op, "id", id );
field::belongs_to( op, "payload", payload, matador::utils::default_foreign_attributes ); field::belongs_to( op, "payload", data, matador::utils::default_foreign_attributes );
field::attribute( op, "type", type, 511 ); field::attribute( op, "type", type, 511 );
field::attribute( op, "description", description, 511 ); field::attribute( op, "description", description, 511 );
field::attribute( op, "state", state ); field::attribute( op, "state", state );

View File

@ -40,8 +40,6 @@ public:
void on_has_many_to_many(const char *, ContainerType &, const utils::foreign_attributes &/*attr*/) {} void on_has_many_to_many(const char *, ContainerType &, const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType> template<class ContainerType>
void on_has_many(const char *, ContainerType &, const char * /*join_column*/, const utils::foreign_attributes &/*attr*/) {} void on_has_many(const char *, ContainerType &, const char * /*join_column*/, const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType>
void on_has_many(const char *, ContainerType &, const utils::foreign_attributes &/*attr*/) {}
private: private:

View File

@ -53,8 +53,6 @@ public:
} }
template<class ContainerType> template<class ContainerType>
void on_has_many(const char *, ContainerType &, const char *, const char *, const utils::foreign_attributes &/*attr*/) {} void on_has_many(const char *, ContainerType &, const char *, const char *, const utils::foreign_attributes &/*attr*/) {}
template<class ContainerType>
void on_has_many(const char *, ContainerType &, const utils::foreign_attributes &/*attr*/) {}
private: private:
detail::fk_value_extractor fk_value_extractor_; detail::fk_value_extractor fk_value_extractor_;

View File

@ -28,7 +28,6 @@ protected:
virtual attribute_reader& result_binder() = 0; virtual attribute_reader& result_binder() = 0;
private: private:
// detail::empty_binder empty_result_binder_;
object_result_binder object_binder_; object_result_binder object_binder_;
}; };

View File

@ -25,67 +25,77 @@ class value;
} }
namespace matador::sql { namespace matador::sql {
namespace detail { namespace detail {
class pk_reader class pk_reader {
{
public: public:
explicit pk_reader(query_result_reader &reader); explicit pk_reader(query_result_reader &reader);
template<class Type> template<class Type>
void read(Type &obj, const size_t column_index) void read(Type &obj, const size_t column_index) {
{
column_index_ = column_index; column_index_ = column_index;
access::process(*this, obj); access::process(*this, obj);
} }
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *id, ValueType &value, std::enable_if_t<std::is_integral_v<ValueType> && !std::is_same_v<bool, ValueType>>* = nullptr); void on_primary_key(const char *id, ValueType &value,
std::enable_if_t<std::is_integral_v<ValueType> && !std::is_same_v<bool, ValueType>> * = nullptr);
void on_primary_key(const char *id, std::string &value, size_t size); void on_primary_key(const char *id, std::string &value, size_t size);
void on_revision(const char * /*id*/, unsigned long long &/*rev*/) { ++column_index_; } void on_revision(const char * /*id*/, unsigned long long &/*rev*/) { ++column_index_; }
template < class Type > template<class Type>
void on_attribute(const char * /*id*/, Type &/*x*/, const utils::field_attributes &/*attr*/ = utils::null_attributes) { ++column_index_; } void on_attribute(const char * /*id*/, Type &/*x*/,
template < class Pointer > const utils::field_attributes &/*attr*/ = utils::null_attributes) { ++column_index_; }
void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) { ++column_index_; }
template < class Pointer > template<class Pointer>
void on_belongs_to(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) {
++column_index_;
}
template<class Pointer>
void on_has_one(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) { ++column_index_; } void on_has_one(const char * /*id*/, Pointer &/*x*/, const utils::foreign_attributes &/*attr*/) { ++column_index_; }
template<class ContainerType> template<class ContainerType>
void on_has_many(const char * /*id*/, ContainerType &, const char * /*join_column*/, const utils::foreign_attributes &/*attr*/) {} void on_has_many(const char * /*id*/, ContainerType &, const char * /*join_column*/,
const utils::foreign_attributes &/*attr*/) {
}
template<class ContainerType> template<class ContainerType>
void on_has_many_to_many(const char *id, ContainerType &c, const char * /*join_column*/, const char * /*inverse_join_column*/, const utils::foreign_attributes &/*attr*/) {} void on_has_many_to_many(const char *id, ContainerType &c, const char * /*join_column*/,
const char * /*inverse_join_column*/, const utils::foreign_attributes &/*attr*/) {
}
template<class ContainerType> template<class ContainerType>
void on_has_many_to_many(const char *id, ContainerType &c, const utils::foreign_attributes &/*attr*/) {} void on_has_many_to_many(const char *id, ContainerType &c, const utils::foreign_attributes &/*attr*/) {
}
private: private:
size_t column_index_{}; size_t column_index_{};
query_result_reader &reader_; query_result_reader &reader_;
}; };
} }
class query_result_impl class query_result_impl {
{
public: public:
query_result_impl(std::unique_ptr<query_result_reader> &&reader, std::vector<object::attribute_definition> &&prototype, size_t column_index = 0); query_result_impl(std::unique_ptr<query_result_reader> &&reader,
query_result_impl(std::unique_ptr<query_result_reader> &&reader, const std::vector<object::attribute_definition> &prototype, size_t column_index = 0); std::vector<object::attribute_definition> &&prototype, size_t column_index = 0);
query_result_impl(std::unique_ptr<query_result_reader> &&reader,
const std::vector<object::attribute_definition> &prototype, size_t column_index = 0);
template<typename ValueType> template<typename ValueType>
void on_primary_key(const char *id, ValueType &value, std::enable_if_t<std::is_integral_v<ValueType> && !std::is_same_v<bool, ValueType>>* = nullptr) void on_primary_key(const char *id, ValueType &value,
{ std::enable_if_t<std::is_integral_v<ValueType> && !std::is_same_v<bool, ValueType>> * = nullptr) {
utils::data_type_traits<ValueType>::read_value(*reader_, id, column_index_++, value); utils::data_type_traits<ValueType>::read_value(*reader_, id, column_index_++, value);
if (type_stack_.size() == 1) { if (type_stack_.size() == 1) {
last_pk_ = current_pk_; last_pk_ = current_pk_;
current_pk_ = value; current_pk_ = value;
} }
} }
void on_primary_key(const char *id, std::string &value, size_t size); void on_primary_key(const char *id, std::string &value, size_t size);
void on_revision(const char *id, uint64_t &rev); void on_revision(const char *id, uint64_t &rev);
template < class Type > template<class Type>
void on_attribute(const char *id, Type &x, const utils::field_attributes &/*attr*/ = utils::null_attributes) void on_attribute(const char *id, Type &x, const utils::field_attributes &/*attr*/ = utils::null_attributes) {
{
utils::data_type_traits<Type>::read_value(*reader_, id, column_index_++, x); utils::data_type_traits<Type>::read_value(*reader_, id, column_index_++, x);
} }
@ -93,42 +103,34 @@ public:
void on_attribute(const char *id, std::string &value, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, std::string &value, const utils::field_attributes &attr = utils::null_attributes);
void on_attribute(const char *id, utils::value &val, const utils::field_attributes &attr = utils::null_attributes); void on_attribute(const char *id, utils::value &val, const utils::field_attributes &attr = utils::null_attributes);
template < class Pointer > template<class Pointer>
void on_belongs_to(const char * /*id*/, Pointer &x, const utils::foreign_attributes &attr) { void on_belongs_to(const char * /*id*/, Pointer &x, const utils::foreign_attributes &attr) {
if (x.empty()) { on_foreign_key(x, attr);
x.reset(new typename Pointer::value_type);
} }
if (attr.fetch() == utils::fetch_type::LAZY) {
pk_reader_.read(*x, column_index_++); template<class Pointer>
} else {
const auto ti = std::type_index(typeid(*x));
type_stack_.push(ti);
access::process(*this, *x);
type_stack_.pop();
}
}
template < class Pointer >
void on_has_one(const char * /*id*/, Pointer &x, const utils::foreign_attributes &attr) { void on_has_one(const char * /*id*/, Pointer &x, const utils::foreign_attributes &attr) {
if (x.empty()) { on_foreign_key(x, attr);
x.reset(new typename Pointer::value_type);
}
if (attr.fetch() == utils::fetch_type::LAZY) {
pk_reader_.read(*x, column_index_++);
} else {
const auto ti = std::type_index(typeid(*x));
type_stack_.push(ti);
access::process(*this, *x);
type_stack_.pop();
}
} }
template<class ContainerType> template<class ContainerType>
void on_has_many_to_many(const char *, ContainerType &, const char * /*join_column*/, const char * /*inverse_join_column*/, const utils::foreign_attributes &/*attr*/) {} void on_has_many_to_many(const char *, ContainerType &, const char * /*join_column*/, const char * /*inverse_join_column*/, const utils::foreign_attributes &attr) {
if (attr.fetch() == utils::fetch_type::LAZY) {
} else {}
}
template<class ContainerType> template<class ContainerType>
void on_has_many_to_many(const char *, ContainerType &, const utils::foreign_attributes &/*attr*/) {} void on_has_many_to_many(const char *, ContainerType &, const utils::foreign_attributes &attr) {
if (attr.fetch() == utils::fetch_type::LAZY) {
} else {}
}
template<class ContainerType> template<class ContainerType>
void on_has_many(const char * /*id*/, ContainerType &cont, const char * /*join_column*/, const utils::foreign_attributes &attr) { void on_has_many(const char * /*id*/, ContainerType &cont, const char * /*join_column*/,
if ( attr.fetch() == utils::fetch_type::LAZY ) { const utils::foreign_attributes &attr) {
if (attr.fetch() == utils::fetch_type::LAZY) {
// pk_reader_.read(*id, column_index_++); // pk_reader_.read(*id, column_index_++);
} else { } else {
const auto ti = std::type_index(typeid(typename ContainerType::value_type::value_type)); const auto ti = std::type_index(typeid(typename ContainerType::value_type::value_type));
@ -143,12 +145,12 @@ public:
} }
} }
} }
template<class ContainerType>
void on_has_many(const char *, ContainerType &, const utils::foreign_attributes &/*attr*/) {} // template<class ContainerType>
// void on_has_many(const char *, ContainerType &, const utils::foreign_attributes &/*attr*/) {}
template<class Type> template<class Type>
void bind(const Type &obj) void bind(const Type &obj) {
{
reader_->bind(obj); reader_->bind(obj);
} }
@ -172,7 +174,7 @@ public:
break; break;
} }
first = false; first = false;
type_stack_.push(typeid(Type)); type_stack_.emplace(typeid(Type));
column_index_ = reader_->start_column_index(); column_index_ = reader_->start_column_index();
access::process(*this, obj); access::process(*this, obj);
type_stack_.pop(); type_stack_.pop();
@ -190,7 +192,7 @@ public:
return true; return true;
} }
[[nodiscard]] const std::vector<object::attribute_definition>& prototype() const; [[nodiscard]] const std::vector<object::attribute_definition> &prototype() const;
private: private:
template<class Type> template<class Type>
@ -199,6 +201,21 @@ private:
return resolver.discover(obj); return resolver.discover(obj);
} }
template<class Pointer>
void on_foreign_key(Pointer &x, const utils::foreign_attributes &attr) {
if (x.empty()) {
x.reset(new typename Pointer::value_type);
}
if (attr.fetch() == utils::fetch_type::LAZY) {
pk_reader_.read(*x, column_index_++);
} else {
const auto ti = std::type_index(typeid(*x));
type_stack_.push(ti);
access::process(*this, *x);
type_stack_.pop();
}
}
protected: protected:
size_t column_index_ = 0; size_t column_index_ = 0;
std::vector<object::attribute_definition> prototype_; std::vector<object::attribute_definition> prototype_;
@ -210,13 +227,11 @@ protected:
}; };
namespace detail { namespace detail {
template<typename ValueType> template<typename ValueType>
void pk_reader::on_primary_key(const char *id, ValueType &value, std::enable_if_t<std::is_integral_v<ValueType> && !std::is_same_v<bool, ValueType>> *) void pk_reader::on_primary_key(const char *id, ValueType &value,
{ std::enable_if_t<std::is_integral_v<ValueType> && !std::is_same_v<bool, ValueType>> *) {
utils::data_type_traits<ValueType>::read_value(reader_, id, column_index_++, value); utils::data_type_traits<ValueType>::read_value(reader_, id, column_index_++, value);
} }
} }
} }

View File

@ -1,7 +1,7 @@
#include "../../../../include/matador/query/intermediates/fetchable_query.hpp" #include "matador/query/intermediates/fetchable_query.hpp"
#include "../../../../include/matador/sql/executor.hpp" #include "matador/sql/executor.hpp"
#include "../../../../include/matador/sql/statement.hpp" #include "matador/sql/statement.hpp"
namespace matador::query { namespace matador::query {
@ -13,11 +13,6 @@ utils::result<sql::query_result<sql::record>, utils::error> fetchable_query::fet
.and_then([](auto &&res) { .and_then([](auto &&res) {
return utils::ok(sql::query_result<sql::record>(std::forward<decltype(res)>(res))); return utils::ok(sql::query_result<sql::record>(std::forward<decltype(res)>(res)));
}); });
// if (!result.is_ok()) {
// return utils::error(result.err());
// }
//
// return utils::ok(query_result<record>(std::move(*result)));
} }
utils::result<std::optional<sql::record>, utils::error> fetchable_query::fetch_one(const sql::executor &exec) const utils::result<std::optional<sql::record>, utils::error> fetchable_query::fetch_one(const sql::executor &exec) const

View File

@ -9,7 +9,7 @@ using namespace matador;
struct person { struct person {
virtual ~person() = default; virtual ~person() = default;
template < typename Operator > template < typename Operator >
void process(Operator &op) {} void process(Operator &/*op*/) {}
}; };
struct student final : person {}; struct student final : person {};

View File

@ -8,7 +8,7 @@ size_t test_result_reader::column_count() const {
return 10; return 10;
} }
const char *test_result_reader::column(size_t index) const { const char *test_result_reader::column(size_t /*index*/) const {
return ""; return "";
} }
@ -20,72 +20,72 @@ size_t test_result_reader::start_column_index() const {
void test_result_reader::unshift() {} void test_result_reader::unshift() {}
void test_result_reader::read_value(const char *id, const size_t index, int8_t &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, int8_t &value) {
value = -8; value = -8;
} }
void test_result_reader::read_value(const char *id, const size_t index, int16_t &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, int16_t &value) {
value = -16; value = -16;
} }
void test_result_reader::read_value(const char *id, const size_t index, int32_t &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, int32_t &value) {
value = -32; value = -32;
} }
void test_result_reader::read_value(const char *id, const size_t index, int64_t &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, int64_t &value) {
value = -64; value = -64;
} }
void test_result_reader::read_value(const char *id, const size_t index, uint8_t &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, uint8_t &value) {
value = 8; value = 8;
} }
void test_result_reader::read_value(const char *id, const size_t index, uint16_t &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, uint16_t &value) {
value = 16; value = 16;
} }
void test_result_reader::read_value(const char *id, const size_t index, uint32_t &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, uint32_t &value) {
value = 32; value = 32;
} }
void test_result_reader::read_value(const char *id, const size_t index, uint64_t &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, uint64_t &value) {
value = 64; value = 64;
} }
void test_result_reader::read_value(const char *id, const size_t index, bool &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, bool &value) {
value = true; value = true;
} }
void test_result_reader::read_value(const char *id, const size_t index, float &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, float &value) {
value = 3.141572f; value = 3.141572f;
} }
void test_result_reader::read_value(const char *id, const size_t index, double &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, double &value) {
value = 2.14159265358979323846; value = 2.14159265358979323846;
} }
void test_result_reader::read_value(const char *id, const size_t index, matador::time &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, matador::time &/*value*/) {
} }
void test_result_reader::read_value(const char *id, const size_t index, matador::date &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, matador::date &/*value*/) {
} }
void test_result_reader::read_value(const char *id, const size_t index, char *value, const size_t size) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, char * /*value*/, const size_t /*size*/) {
} }
void test_result_reader::read_value(const char *id, const size_t index, std::string &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, std::string &value) {
value = "Lorem ipsum"; value = "Lorem ipsum";
} }
void test_result_reader::read_value(const char *id, const size_t index, std::string &value, const size_t size) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, std::string &value, const size_t /*size*/) {
value = "Hello world"; value = "Hello world";
} }
void test_result_reader::read_value(const char *id, const size_t index, utils::blob &value) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, utils::blob &value) {
value = {'b', 'l', 'o', 'b'}; value = {'b', 'l', 'o', 'b'};
} }
void test_result_reader::read_value(const char *id, const size_t index, utils::value &val, const size_t size) { void test_result_reader::read_value(const char * /*id*/, const size_t /*index*/, utils::value &val, const size_t /*size*/) {
val = "value"; val = "value";
} }
utils::attribute_reader &test_result_reader::result_binder() { utils::attribute_reader &test_result_reader::result_binder() {