boat
C++23 geospatial library
Loading...
Searching...
No Matches
command.hpp
Go to the documentation of this file.
1// Andrew Naplavkov
2
3#ifndef BOAT_GDAL_COMMAND_HPP
4#define BOAT_GDAL_COMMAND_HPP
5
6#include <boat/db/command.hpp>
7#include <boat/gdal/detail/vector.hpp>
8
9namespace boat::gdal {
10
12 dataset_ptr dataset;
13 std::string dialect;
14
15 db::rowset exec(db::query const& qry, std::stop_token = {}) override
16 {
17 auto txt = qry.text(id_quote(), param_mark());
18 if (auto lyr = execute(dataset.get(), txt.data(), dialect.data()))
19 return select(lyr.get(), fields::make(lyr.get()), INT_MAX);
20 auto err = error_or("");
21 return err.empty() ? db::rowset{} : throw std::runtime_error(err);
22 }
23
24 void set_autocommit(bool on) override
25 {
26 gdal::set_autocommit(dataset.get(), on);
27 }
28
29 void commit() override { gdal::commit(dataset.get()); }
30 char id_quote() override { return '"'; }
31 std::string param_mark() override { return {}; }
32 std::string dbms() override { return to_lower(dialect); }
33};
34
35} // namespace boat::gdal
36
37#endif // BOAT_GDAL_COMMAND_HPP
Definition query.hpp:20
std::string text(char id_quote, std::string_view param_mark) const
Definition query.hpp:47
Definition catalog.hpp:12
Definition command.hpp:12
Definition rowset.hpp:12
Definition command.hpp:11
db::rowset exec(db::query const &qry, std::stop_token={}) override
Definition command.hpp:15
std::string param_mark() override
"{}" in the result is replaced with the parameter number.
Definition command.hpp:31
std::string dialect
Definition command.hpp:13
char id_quote() override
Definition command.hpp:30
std::string dbms() override
The result is lower-case.
Definition command.hpp:32
void set_autocommit(bool on) override
Definition command.hpp:24
dataset_ptr dataset
Definition command.hpp:12
void commit() override
Definition command.hpp:29