added column names and values generator and tests

This commit is contained in:
2023-11-12 22:27:19 +01:00
parent 30f2126225
commit 4ed01a617d
14 changed files with 374 additions and 23 deletions
+62 -1
View File
@@ -1,5 +1,7 @@
#include "matador/sql/column_generator.hpp"
#include "matador/utils/identifiable.hpp"
namespace matador::sql {
column_generator::column_generator(std::vector<column> &columns)
@@ -17,7 +19,8 @@ void column_generator::on_revision(const char *id, unsigned long long int &x)
void column_generator::on_belongs_to(const char *id, utils::identifiable &x, utils::cascade_type)
{
columns_.push_back(fk_column_generator_.generate(id, x));
// x.primary_key().serialize(fk_column_generator)
}
void column_generator::on_has_one(const char *id, utils::identifiable &x, utils::cascade_type)
@@ -25,4 +28,62 @@ void column_generator::on_has_one(const char *id, utils::identifiable &x, utils:
}
column fk_column_generator::generate(const char *id, utils::identifiable &x)
{
identifiable_ = x;
id_ = id;
x.primary_key().serialize(*this);
return column_;
}
void fk_column_generator::serialize(short &i, const utils::field_attributes &attributes)
{
column_.
}
void fk_column_generator::serialize(int &i, const utils::field_attributes &attributes)
{
}
void fk_column_generator::serialize(long &i, const utils::field_attributes &attributes)
{
}
void fk_column_generator::serialize(long long int &i, const utils::field_attributes &attributes)
{
}
void fk_column_generator::serialize(unsigned short &i, const utils::field_attributes &attributes)
{
}
void fk_column_generator::serialize(unsigned int &i, const utils::field_attributes &attributes)
{
}
void fk_column_generator::serialize(unsigned long &i, const utils::field_attributes &attributes)
{
}
void fk_column_generator::serialize(unsigned long long int &i, const utils::field_attributes &attributes)
{
}
void fk_column_generator::serialize(std::string &string, const utils::field_attributes &attributes)
{
}
void fk_column_generator::serialize(utils::null_type_t &type, const utils::field_attributes &attributes)
{
}
}
+29
View File
@@ -0,0 +1,29 @@
#include "matador/sql/column_name_generator.hpp"
namespace matador::sql {
column_name_generator::column_name_generator(std::vector<std::string> &column_names)
: column_names_(column_names)
{}
void column_name_generator::on_primary_key(const char *id, std::string &, size_t)
{
column_names_.emplace_back(id);
}
void column_name_generator::on_revision(const char *id, unsigned long long int &)
{
column_names_.emplace_back(id);
}
void column_name_generator::on_belongs_to(const char *id, utils::identifiable &, utils::cascade_type)
{
column_names_.emplace_back(id);
}
void column_name_generator::on_has_one(const char *id, utils::identifiable &, utils::cascade_type)
{
column_names_.emplace_back(id);
}
}
+36
View File
@@ -0,0 +1,36 @@
#include "matador/sql/value_generator.hpp"
namespace matador::sql {
value_generator::value_generator(std::vector<any_type> &values)
: values_(values)
{}
void value_generator::on_primary_key(const char *, std::string &pk, size_t)
{
append(pk);
}
void value_generator::on_revision(const char *, unsigned long long int &rev)
{
append(rev);
}
void value_generator::on_attribute(const char *, char *x, const utils::field_attributes &)
{
append(x);
}
void value_generator::on_attribute(const char *, std::string &x, const utils::field_attributes &)
{
append(x);
}
void value_generator::on_belongs_to(const char *, utils::identifiable &x, utils::cascade_type) {
}
void value_generator::on_has_one(const char *, utils::identifiable &x, utils::cascade_type) {
}
}