|
|
## Datastore
|
|
|
|
|
|
The purpose of the Datastore is to contain an array of table of data but you can store anything you want.
|
|
|
|
|
|
Exemple:
|
|
|
```cpp
|
|
|
laldb::Datastore ds;
|
|
|
|
|
|
ds.insert(laldb::makeArray {
|
|
|
laldb::makeObject {{ "name", "Clement" }, { "lastName", "A" }, { "age", 16 }},
|
|
|
laldb::makeObject {{ "name", "Paul" }, { "lastName", "A" }, { "age", 32 }},
|
|
|
laldb::makeObject {{ "name", "Jean" }, { "lastName", "A" }, { "age", 32 }},
|
|
|
laldb::makeObject {{ "name", "Clement" }, { "lastName", "B" }, { "age", 20 }},
|
|
|
laldb::makeObject {{ "name", "Cyril" }, { "lastName", "A" }, { "age", 32 }},
|
|
|
laldb::makeObject {{ "name", "Paul" }, { "lastName", "B" }, { "age", 42 }},
|
|
|
laldb::makeObject {{ "name", "Jean" }, { "lastName", "B" }, { "age", 42 }},
|
|
|
laldb::makeObject {{ "name", "Oui" }, { "lastName", "C" }, { "age", 32 }},
|
|
|
laldb::makeObject {{ "name", "Non" }, { "lastName", "D" }, { "age", 32 }}
|
|
|
}, [&] (laldb::Datastore::Error err, laldb::DataRepresentation doc) {
|
|
|
if (err) {
|
|
|
throw std::runtime_error("Insert failed!");
|
|
|
}
|
|
|
});
|
|
|
|
|
|
auto query = ds.find(laldb::makeObject{{ "age", laldb::Datastore::Func([](laldb::DataRepresentation const &o) {
|
|
|
return (o.value<laldb::Number>() <= 32);})
|
|
|
}});
|
|
|
|
|
|
query.skip(1).limit(4).launch([&] (laldb::Datastore::Error err, laldb::DataRepresentation docs) {
|
|
|
if (err == true || docs.isArray() == false) {
|
|
|
std::cerr << "ERROR : " << docs.value<laldb::String>() << std::endl;
|
|
|
return;
|
|
|
}
|
|
|
for (auto &doc : docs) {
|
|
|
std::cout << doc["name"].value<laldb::String>() << " " << doc["lastName"].value<laldb::String>() << " " << doc["age"].value<laldb::Number>() << std::endl;
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|