Added CreateTable

This commit is contained in:
Dr. Patrick Urbanke
2025-03-19 06:44:13 +01:00
parent c16bf7963d
commit ab5bc10e1d
5 changed files with 65 additions and 16 deletions

View File

@@ -0,0 +1,21 @@
#ifndef SQLGEN_DYNAMIC_CREATETABLE_HPP_
#define SQLGEN_DYNAMIC_CREATETABLE_HPP_
#include <string>
#include <vector>
#include "Column.hpp"
#include "Table.hpp"
namespace sqlgen::dynamic {
struct CreateTable {
Table table;
std::vector<Column> columns;
bool if_not_exists = true;
// TODO: Constraints
};
} // namespace sqlgen::dynamic
#endif

View File

@@ -10,8 +10,8 @@
namespace sqlgen::dynamic {
struct SelectFrom {
Table table;
std::vector<Column> columns;
Table table;
std::vector<Column> columns;
};
} // namespace sqlgen::dynamic

View File

@@ -4,12 +4,14 @@
#include <string>
#include <vector>
#include "Column.hpp"
namespace sqlgen::dynamic {
struct Table {
std::string alias;
std::string name;
std::string schema = "public";
std::string alias;
std::string name;
std::string schema = "public";
};
} // namespace sqlgen::dynamic

View File

@@ -0,0 +1,26 @@
#ifndef SQLGEN_DYNAMIC_CREATE_TABLE_HPP_
#define SQLGEN_DYNAMIC_CREATE_TABLE_HPP_
#include <string>
#include <vector>
#include "Column.hpp"
#include "CreateTable.hpp"
#include "Table.hpp"
namespace sqlgen::dynamic {
CreateTable create_table(const std::string& _table,
const std::vector<Column>& _columns) {
return CreateTable{.table = Table{.name = _table}, .columns = _columns};
}
CreateTable create_table(std::string& _schema, const std::string& _table,
const std::vector<Column>& _columns) {
return CreateTable{.table = Table{.name = _table, .schema = _schema},
.columns = _columns};
}
} // namespace sqlgen::dynamic
#endif

View File

@@ -12,20 +12,20 @@ namespace sqlgen::dynamic {
SelectFrom select(const std::string& _table,
const std::vector<std::string>& _columns) {
std::vector<Column> columns;
for (const auto& name : _columns) {
columns.emplace_back(Column{.name = name});
}
return SelectFrom{.table = Table{.name = _table}, .columns = columns};
std::vector<Column> columns;
for (const auto& name : _columns) {
columns.emplace_back(Column{.name = name});
}
return SelectFrom{.table = Table{.name = _table}, .columns = columns};
}
SelectFrom select(const std::string& _schema, const std::string& _table,
const std::vector<std::string>& _columns) {
std::vector<Column> columns;
for (const auto& name : _columns) {
columns.emplace_back(Column{.name = name});
}
return SelectFrom{.table = Table{.name = _table, .schema = _schema},
.columns = columns};
std::vector<Column> columns;
for (const auto& name : _columns) {
columns.emplace_back(Column{.name = name});
}
return SelectFrom{.table = Table{.name = _table, .schema = _schema},
.columns = columns};
}
} // namespace sqlgen::dynamic