updated README.md

This commit is contained in:
Sascha Kuehl 2023-12-11 20:16:43 +01:00
parent 81f22d73d9
commit 56c65203fc
1 changed files with 51 additions and 9 deletions

View File

@ -4,11 +4,36 @@ A fluent sql query_context builder
Object definition
```cpp
enum class Color {
Red, Green, Blue, Yellow, Pink, Black, White
};
struct Coordinate
{
int x;
int y;
int z;
};
// special handling for custom type Coordinate
namespace matador::utils::access {
template<class Operator>
void attribute(Operator &op, const char *id, Coordinate &value, const field_attributes &attr = null_attributes) {
attribute(op, (std::string(id) + "_x").c_str(), value.x, attr);
attribute(op, (std::string(id) + "_y").c_str(), value.y, attr);
attribute(op, (std::string(id) + "_z").c_str(), value.z, attr);
}
}
struct airplane
{
unsigned long id;
std::string brand;
std::string model;
Color color;
Coordinate position;
template<class Operator>
void process(Operator &op) {
@ -16,6 +41,8 @@ struct airplane
field::primary_key(op, "id", id);
field::attribute(op, "brand", brand, 255);
field::attribute(op, "model", model, 255);
field::attribute(op, "color", color);
field::attribute(op, "position", position);
}
};
```
@ -23,20 +50,35 @@ struct airplane
connection_pool<connection> pool("sqlite://sqlite.db", 4);
session s(pool);
// register entity
s.attach<airplane>("airplane")
// create all tables
s.create();
s.create().table<airplane>().execute();
std::vector<entity<airplane>> planes {
make_entity<airplane>(1, "Airbus", "A380"),
make_entity<airplane>(2, "Boeing", "707"),
make_entity<airplane>(3, "Boeing", "747")
};
auto stmt = s.insert()
.into<airplane>("airplane")
.values<airplane>().prepare();
// insert
s.insert<airplane>(1, "Airbus", "A380");
s.insert<airplane>(2, "Boeing", "748");
s.insert<airplane>(3, "Boeing", "707");
for (const auto &plane: planes) {
auto res = stmt.bind(*plane).execute();
stmt.reset();
}
s.update<airplane>().set({"model", "747"}).where("id"_col == 2);
s.update("airplane")
.set({"model", "737"})
.where("id"_col == 2)
.execute();
auto result = s.select<airplane>().where("brand"_col == "Boeing");
auto result = s.select<airplane>()
.from("airplane")
.where("brand"_col == "Boeing")
.execute();
for (const auto &plane : result) {
std::cout << "airplane: " << plane->brand << " - " << plane->model << "\n";