schema progress
This commit is contained in:
@@ -63,7 +63,7 @@ public:
|
||||
template<class ContainerType>
|
||||
void on_has_many(const char *, ContainerType &, const char *, const char *, const utils::foreign_attributes &attr)
|
||||
{
|
||||
if (attr.fetch() == fetch_type::LAZY) {
|
||||
if (attr.fetch() == utils::fetch_type::LAZY) {
|
||||
return;
|
||||
}
|
||||
const auto info = table_schema_.info<typename ContainerType::value_type::value_type>();
|
||||
|
||||
@@ -36,7 +36,7 @@ public:
|
||||
[[nodiscard]] bool exists(const std::string &schema_name, const std::string &table_name) const;
|
||||
[[nodiscard]] bool exists(const std::string &table_name) const;
|
||||
|
||||
sql::query query(const std::shared_ptr<sql::schema> &schema) const;
|
||||
sql::query query(const sql::schema &schema) const;
|
||||
|
||||
query_result<record> fetch(const query_context &q) const;
|
||||
[[nodiscard]] std::unique_ptr<query_result_impl> fetch(const std::string &sql) const;
|
||||
|
||||
@@ -10,7 +10,7 @@ class connection;
|
||||
class query
|
||||
{
|
||||
public:
|
||||
explicit query(connection &db, const std::shared_ptr<sql::schema> &schema);
|
||||
explicit query(connection &db, const sql::schema &schema);
|
||||
query(const query &) = delete;
|
||||
query& operator=(const query &) = delete;
|
||||
|
||||
@@ -28,19 +28,19 @@ public:
|
||||
|
||||
private:
|
||||
connection &connection_;
|
||||
std::shared_ptr<sql::schema> schema_;
|
||||
const sql::schema &schema_;
|
||||
};
|
||||
|
||||
template<class Type>
|
||||
query_select_intermediate query::select()
|
||||
{
|
||||
return select(column_name_generator::generate<Type>(*schema_));
|
||||
return select(column_name_generator::generate<Type>(schema_));
|
||||
}
|
||||
|
||||
template<class Type>
|
||||
query_select_intermediate query::select(std::initializer_list<column> columns)
|
||||
{
|
||||
auto cols = column_name_generator::generate<Type>(*schema_);
|
||||
auto cols = column_name_generator::generate<Type>(schema_);
|
||||
cols.insert(cols.end(), columns);
|
||||
return select(cols);
|
||||
}
|
||||
|
||||
@@ -24,17 +24,17 @@ class connection;
|
||||
class basic_query_intermediate
|
||||
{
|
||||
public:
|
||||
explicit basic_query_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema);
|
||||
explicit basic_query_intermediate(connection &db, const sql::schema &schema);
|
||||
|
||||
protected:
|
||||
connection &connection_;
|
||||
std::shared_ptr<sql::schema> schema_;
|
||||
const sql::schema &schema_;
|
||||
};
|
||||
|
||||
class query_intermediate : public basic_query_intermediate
|
||||
{
|
||||
public:
|
||||
query_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema, query_data &data);
|
||||
query_intermediate(connection &db, const sql::schema &schema, query_data &data);
|
||||
|
||||
protected:
|
||||
query_data &data_;
|
||||
@@ -188,7 +188,7 @@ private:
|
||||
class query_start_intermediate : public basic_query_intermediate
|
||||
{
|
||||
public:
|
||||
explicit query_start_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema);
|
||||
explicit query_start_intermediate(connection &db, const sql::schema &schema);
|
||||
|
||||
protected:
|
||||
query_data data_;
|
||||
@@ -197,7 +197,7 @@ protected:
|
||||
class query_select_intermediate : public query_start_intermediate
|
||||
{
|
||||
public:
|
||||
query_select_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema, const std::vector<column>& columns);
|
||||
query_select_intermediate(connection &db, const sql::schema &schema, const std::vector<column>& columns);
|
||||
|
||||
query_from_intermediate from(const table& t);
|
||||
};
|
||||
@@ -234,24 +234,24 @@ public:
|
||||
class query_create_intermediate : public query_start_intermediate
|
||||
{
|
||||
public:
|
||||
explicit query_create_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema);
|
||||
explicit query_create_intermediate(connection &db, const sql::schema &schema);
|
||||
|
||||
query_execute_finish table(const sql::table &table, std::initializer_list<column_definition> columns);
|
||||
query_execute_finish table(const sql::table &table, const std::vector<column_definition> &columns);
|
||||
template<class Type>
|
||||
query_execute_finish table(const sql::table &table)
|
||||
{
|
||||
if (!schema_->exists<Type>()) {
|
||||
schema_->attach<Type>(table.name);
|
||||
}
|
||||
return this->table(table, column_generator::generate<Type>(*schema_));
|
||||
// if (!schema_.exists<Type>()) {
|
||||
// schema_.attach<Type>(table.name);
|
||||
// }
|
||||
return this->table(table, column_generator::generate<Type>(schema_));
|
||||
}
|
||||
};
|
||||
|
||||
class query_drop_intermediate : query_start_intermediate
|
||||
{
|
||||
public:
|
||||
explicit query_drop_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema);
|
||||
explicit query_drop_intermediate(connection &db, const sql::schema &schema);
|
||||
|
||||
query_execute_finish table(const sql::table &table);
|
||||
};
|
||||
@@ -259,14 +259,14 @@ public:
|
||||
class query_insert_intermediate : public query_start_intermediate
|
||||
{
|
||||
public:
|
||||
explicit query_insert_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema);
|
||||
explicit query_insert_intermediate(connection &db, const sql::schema &schema);
|
||||
|
||||
query_into_intermediate into(const sql::table &table, std::initializer_list<column> column_names);
|
||||
query_into_intermediate into(const sql::table &table, std::vector<column> &&column_names);
|
||||
template<class Type>
|
||||
query_into_intermediate into(const sql::table &table)
|
||||
{
|
||||
return into(table, column_name_generator::generate<Type>(*schema_));
|
||||
return into(table, column_name_generator::generate<Type>(schema_));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -296,7 +296,7 @@ private:
|
||||
class query_update_intermediate : public query_start_intermediate
|
||||
{
|
||||
public:
|
||||
query_update_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema, const sql::table& table);
|
||||
query_update_intermediate(connection &db, const sql::schema &schema, const sql::table& table);
|
||||
|
||||
query_set_intermediate set(std::initializer_list<key_value_pair> columns);
|
||||
query_set_intermediate set(std::vector<key_value_pair> &&columns);
|
||||
@@ -325,7 +325,7 @@ private:
|
||||
class query_delete_intermediate : public query_start_intermediate
|
||||
{
|
||||
public:
|
||||
explicit query_delete_intermediate(connection &db, const std::shared_ptr<sql::schema> &schema);
|
||||
explicit query_delete_intermediate(connection &db, const sql::schema &schema);
|
||||
|
||||
query_delete_from_intermediate from(const sql::table &table);
|
||||
};
|
||||
|
||||
@@ -28,7 +28,12 @@ public:
|
||||
using iterator = repository::iterator;
|
||||
using const_iterator = repository::const_iterator;
|
||||
|
||||
schema() = delete;
|
||||
explicit schema(std::string name);
|
||||
schema(const schema&) = delete;
|
||||
schema& operator=(const schema&) = delete;
|
||||
schema(schema&&) noexcept = default;
|
||||
schema& operator=(schema&&) noexcept = default;
|
||||
|
||||
[[nodiscard]] std::string name() const;
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ private:
|
||||
connection_pool<connection> &pool_;
|
||||
const class dialect &dialect_;
|
||||
|
||||
std::shared_ptr<schema> schema_;
|
||||
std::unique_ptr<schema> schema_;
|
||||
mutable std::unordered_map<std::string, record> prototypes_;
|
||||
};
|
||||
|
||||
@@ -74,7 +74,7 @@ entity<Type> session::insert(Type *obj)
|
||||
if (!info) {
|
||||
return {};
|
||||
}
|
||||
c->query(schema_).insert().into<Type>(info->name).values(*obj).execute();
|
||||
c->query(*schema_).insert().into<Type>(info->name).values(*obj).execute();
|
||||
|
||||
return entity{obj};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user