constraint, column and table query progress
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#define MATADOR_BUILDER_HPP
|
||||
|
||||
#include "matador/query/column.hpp"
|
||||
#include "matador/query/constraint.hpp"
|
||||
#include "matador/query/table.hpp"
|
||||
|
||||
#include "matador/utils/basic_types.hpp"
|
||||
@@ -12,18 +13,6 @@
|
||||
|
||||
namespace matador::object {
|
||||
|
||||
class entity {
|
||||
public:
|
||||
explicit entity(std::string name)
|
||||
: name_(std::move(name)) {}
|
||||
|
||||
[[nodiscard]] const std::string& name() const;
|
||||
|
||||
private:
|
||||
std::string name_;
|
||||
std::string alias_;
|
||||
};
|
||||
|
||||
class data_type {
|
||||
public:
|
||||
explicit data_type(const utils::basic_type type, const size_t size = 0)
|
||||
@@ -55,6 +44,10 @@ using TinyInt = typed_data_type<int8_t>;
|
||||
using SmallInt = typed_data_type<int16_t>;
|
||||
using Integer = typed_data_type<int32_t>;
|
||||
using BigInt = typed_data_type<int64_t>;
|
||||
using TinyIntUnsigned = typed_data_type<uint8_t>;
|
||||
using SmallIntUnsigned = typed_data_type<uint16_t>;
|
||||
using IntegerUnsigned = typed_data_type<uint32_t>;
|
||||
using BigIntUnsigned = typed_data_type<uint64_t>;
|
||||
|
||||
using Real = typed_data_type<float>;
|
||||
using Double = typed_data_type<double>;
|
||||
@@ -64,28 +57,6 @@ using Boolean = typed_data_type<bool>;
|
||||
using Varchar = sized_typed_data_type<std::string>;
|
||||
using Blob = sized_typed_data_type<std::vector<std::byte>>;
|
||||
|
||||
class constraint {
|
||||
public:
|
||||
explicit constraint(std::string name)
|
||||
: name_(std::move(name)) {}
|
||||
|
||||
[[nodiscard]] const std::string& name() const;
|
||||
[[nodiscard]] std::string column_name() const;
|
||||
[[nodiscard]] const utils::constraints& type() const;
|
||||
[[nodiscard]] bool is_primary_key_constraint() const;
|
||||
[[nodiscard]] bool is_foreign_key_constraint() const;
|
||||
[[nodiscard]] bool is_unique_constraint() const;
|
||||
[[nodiscard]] const std::string& referenced_table() const;
|
||||
[[nodiscard]] const std::string& referenced_column() const;
|
||||
|
||||
private:
|
||||
std::string name_;
|
||||
std::string column_name_;
|
||||
utils::constraints type_{};
|
||||
std::string referenced_table_;
|
||||
std::string referenced_column_;
|
||||
data_type dt = Varchar{255};
|
||||
};
|
||||
}
|
||||
namespace matador::query {
|
||||
|
||||
@@ -94,7 +65,7 @@ public:
|
||||
explicit column_builder(std::string column_name, utils::basic_type type, size_t size = 0);
|
||||
|
||||
// ReSharper disable once CppNonExplicitConversionOperator
|
||||
operator query::column() const; // NOLINT(*-explicit-constructor)
|
||||
operator column() const; // NOLINT(*-explicit-constructor)
|
||||
|
||||
column_builder& not_null();
|
||||
|
||||
@@ -111,7 +82,7 @@ public:
|
||||
table_builder& as(std::string table_alias);
|
||||
|
||||
// ReSharper disable once CppNonExplicitConversionOperator
|
||||
operator query::table() const; // NOLINT(*-explicit-constructor)
|
||||
operator table() const; // NOLINT(*-explicit-constructor)
|
||||
|
||||
private:
|
||||
std::string table_name;
|
||||
@@ -126,7 +97,7 @@ public:
|
||||
constraint_builder& references(std::string table, std::string column);
|
||||
|
||||
// ReSharper disable once CppNonExplicitConversionOperator
|
||||
operator object::constraint() const; // NOLINT(*-explicit-constructor)
|
||||
operator class constraint() const; // NOLINT(*-explicit-constructor)
|
||||
|
||||
private:
|
||||
std::string constraint_name;
|
||||
@@ -137,8 +108,8 @@ private:
|
||||
};
|
||||
|
||||
constraint_builder constraint(std::string name);
|
||||
table_builder table(std::string name);
|
||||
column_builder column(std::string name, utils::basic_type type, size_t size = 0);
|
||||
// table_builder table(std::string name);
|
||||
// column_builder column(std::string name, utils::basic_type type, size_t size = 0);
|
||||
|
||||
}
|
||||
#endif //MATADOR_BUILDER_HPP
|
||||
@@ -3,6 +3,9 @@
|
||||
|
||||
#include "matador/sql/sql_functions.hpp"
|
||||
|
||||
#include "matador/utils/basic_types.hpp"
|
||||
#include "matador/utils/field_attributes.hpp"
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
@@ -25,8 +28,11 @@ public:
|
||||
|
||||
[[nodiscard]] const std::string& name() const;
|
||||
[[nodiscard]] const std::string& alias() const;
|
||||
[[nodiscard]] utils::basic_type type() const;
|
||||
[[nodiscard]] utils::field_attributes attributes() const;
|
||||
|
||||
[[nodiscard]] bool is_function() const;
|
||||
[[nodiscard]] bool is_nullable() const;
|
||||
[[nodiscard]] sql::sql_function_t function() const;
|
||||
[[nodiscard]] bool has_alias() const;
|
||||
|
||||
@@ -40,6 +46,8 @@ private:
|
||||
std::shared_ptr<query::table> table_;
|
||||
std::string name_;
|
||||
std::string alias_;
|
||||
utils::basic_type type_{utils::basic_type::Unknown};
|
||||
utils::field_attributes attributes_{};
|
||||
|
||||
sql::sql_function_t function_{sql::sql_function_t::None};
|
||||
};
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
#ifndef MATADOR_CONSTRAINT_HPP
|
||||
#define MATADOR_CONSTRAINT_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace matador::utils {
|
||||
enum class constraints : unsigned char;
|
||||
}
|
||||
|
||||
namespace matador::query {
|
||||
class constraint {
|
||||
public:
|
||||
constraint() = default;
|
||||
constraint(std::string column_name, utils::constraints type, std::string referenced_table, std::string referenced_column);
|
||||
|
||||
[[nodiscard]] std::string column_name() const;
|
||||
[[nodiscard]] const utils::constraints& type() const;
|
||||
[[nodiscard]] bool is_primary_key_constraint() const;
|
||||
[[nodiscard]] bool is_foreign_key_constraint() const;
|
||||
[[nodiscard]] bool is_unique_constraint() const;
|
||||
[[nodiscard]] const std::string& referenced_table() const;
|
||||
[[nodiscard]] const std::string& referenced_column() const;
|
||||
|
||||
private:
|
||||
std::string column_name_;
|
||||
utils::constraints type_{};
|
||||
std::string referenced_table_;
|
||||
std::string referenced_column_;
|
||||
};
|
||||
}
|
||||
#endif //MATADOR_CONSTRAINT_HPP
|
||||
@@ -4,8 +4,6 @@
|
||||
#include "matador/query/criteria/binary_criteria.hpp"
|
||||
#include "matador/query/criteria/collection_criteria.hpp"
|
||||
|
||||
#include "matador/query/column.hpp"
|
||||
|
||||
#include "matador/utils/placeholder.hpp"
|
||||
#include "matador/utils/value.hpp"
|
||||
|
||||
@@ -13,6 +11,7 @@ namespace matador::sql {
|
||||
struct query_context;
|
||||
}
|
||||
namespace matador::query {
|
||||
class column;
|
||||
|
||||
template<class Type>
|
||||
criteria_ptr operator==(const column &col, Type val) {
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
|
||||
#include "matador/query/intermediates/executable_query.hpp"
|
||||
|
||||
#include "matador/query/constraint.hpp"
|
||||
|
||||
#include "matador/object/attribute.hpp"
|
||||
#include "matador/object/restriction.hpp"
|
||||
|
||||
@@ -16,16 +18,18 @@ class query_create_table_columns_intermediate : public executable_query {
|
||||
public:
|
||||
using executable_query::executable_query;
|
||||
|
||||
executable_query constraints(std::initializer_list<class object::restriction> constraints);
|
||||
executable_query constraints(const std::list<class object::restriction> &constraints);
|
||||
executable_query constraints(std::initializer_list<object::restriction> constraints);
|
||||
executable_query constraints(const std::list<object::restriction> &restrictions);
|
||||
executable_query constraints(std::initializer_list<constraint> constraints);
|
||||
executable_query constraints(const std::list<constraint> &restrictions);
|
||||
};
|
||||
|
||||
class query_create_table_intermediate : public query_intermediate {
|
||||
public:
|
||||
using query_intermediate::query_intermediate;
|
||||
|
||||
query_create_table_columns_intermediate columns(std::initializer_list<object::attribute> columns);
|
||||
query_create_table_columns_intermediate columns(const std::list<object::attribute> &columns);
|
||||
query_create_table_columns_intermediate columns(std::initializer_list<object::attribute> attributes);
|
||||
query_create_table_columns_intermediate columns(const std::list<object::attribute> &attributes);
|
||||
query_create_table_columns_intermediate columns(std::initializer_list<column> columns);
|
||||
query_create_table_columns_intermediate columns(const std::list<column> &columns);
|
||||
};
|
||||
|
||||
@@ -7,11 +7,9 @@
|
||||
#include "matador/query/internal/column_value_pair.hpp"
|
||||
#include "matador/query/query_part.hpp"
|
||||
#include "matador/query/column.hpp"
|
||||
#include "matador/query/constraint.hpp"
|
||||
#include "matador/query/table.hpp"
|
||||
|
||||
#include "matador/object/attribute.hpp"
|
||||
#include "matador/object/restriction.hpp"
|
||||
|
||||
#include "matador/utils/placeholder.hpp"
|
||||
|
||||
#include <list>
|
||||
@@ -379,28 +377,28 @@ private:
|
||||
|
||||
class query_create_table_columns_part final : public query_part {
|
||||
public:
|
||||
explicit query_create_table_columns_part(const std::list<object::attribute> &columns);
|
||||
explicit query_create_table_columns_part(const std::list<column> &columns);
|
||||
|
||||
[[nodiscard]] const std::list<object::attribute>& columns() const;
|
||||
[[nodiscard]] const std::list<column>& columns() const;
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::list<object::attribute> columns_;
|
||||
std::list<column> columns_;
|
||||
};
|
||||
|
||||
class query_create_table_constraints_part final : public query_part {
|
||||
public:
|
||||
explicit query_create_table_constraints_part(const std::list<class object::restriction> &constraints);
|
||||
explicit query_create_table_constraints_part(const std::list<constraint> &constraints);
|
||||
|
||||
[[nodiscard]] const std::list<class object::restriction>& constraints() const;
|
||||
[[nodiscard]] const std::list<constraint>& constraints() const;
|
||||
|
||||
private:
|
||||
void accept(query_part_visitor &visitor) override;
|
||||
|
||||
private:
|
||||
std::list<class object::restriction> constraints_;
|
||||
std::list<constraint> constraints_;
|
||||
};
|
||||
|
||||
class query_create_schema_part final : public query_part {
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
#ifndef QUERY_TABLE_HPP
|
||||
#define QUERY_TABLE_HPP
|
||||
|
||||
#include "column.hpp"
|
||||
#include "matador/query/column.hpp"
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace matador::query {
|
||||
|
||||
class column;
|
||||
|
||||
// ReSharper disable CppNonExplicitConvertingConstructor
|
||||
class table {
|
||||
public:
|
||||
@@ -17,7 +15,7 @@ public:
|
||||
table(const char *name); // NOLINT(*-explicit-constructor)
|
||||
table(std::string name); // NOLINT(*-explicit-constructor)
|
||||
table(std::string name, std::string as);
|
||||
table(std::string name, std::string as, const std::vector<class column> &columns);
|
||||
table(std::string name, std::string as, const std::vector<column> &columns);
|
||||
|
||||
table as(const std::string &a);
|
||||
|
||||
@@ -29,7 +27,7 @@ public:
|
||||
|
||||
[[nodiscard]] const std::string& name() const;
|
||||
[[nodiscard]] const std::string& alias() const;
|
||||
[[nodiscard]] const std::vector<class column>& columns() const;
|
||||
[[nodiscard]] const std::vector<column>& columns() const;
|
||||
|
||||
// ReSharper disable once CppNonExplicitConversionOperator
|
||||
operator const std::vector<query::column>&() const; // NOLINT(*-explicit-constructor)
|
||||
@@ -40,7 +38,7 @@ private:
|
||||
std::string alias_;
|
||||
|
||||
std::string schema_name_;
|
||||
std::vector<query::column> columns_;
|
||||
std::vector<column> columns_;
|
||||
};
|
||||
|
||||
table operator ""_tab(const char *name, size_t len);
|
||||
|
||||
Reference in New Issue
Block a user