载入中...
搜索中...
未找到
Database.cpp
浏览该文件的文档.
132 return execute("INSERT INTO " + quoteIdentifier(table) + " (" + columns + ") VALUES (" + data + ")");
135int Connection::update(const std::string& table, const Row& values, const std::string& whereClause) {
147 return execute("DELETE FROM " + quoteIdentifier(table) + (whereClause.empty() ? "" : " WHERE " + whereClause));
153int Connection::updateJson(const std::string& table, const std::string& json, const std::string& whereClause) {
157int Connection::updateByKey(const std::string& table, const Row& values, const std::string& key, const Value& id) {
165std::vector<Row> Connection::queryByKey(const std::string& table, const std::string& key, const Value& id) {
166 return query("SELECT * FROM " + quoteIdentifier(table) + " WHERE " + quoteIdentifier(key) + "=" + literal(id) +
175Query::Query(Connection* connection, std::string table) : connection_(connection), table_(std::move(table)) {
187Query* Query::whereJson(const std::string& column, const std::string& op, const std::string& valueJson) {
211 for (std::size_t i = 0; i < predicates_.size(); ++i) sql += (i == 0 ? " WHERE " : " AND ") + predicates_[i];
244std::string Model::allJson() { return connection_->queryJson("SELECT * FROM " + quoteIdentifier(table_)); }
260Connection* Database::connectSQLite(std::string path) { return connect("SQLite", std::move(path)); }
266 "DatabaseConnection", std::function<Connection*()>([] { return new Connection("SQLite", ":memory:"); }), true);
278 table.addClass<Query>("DatabaseQuery", std::function<Query*()>([]() -> Query* { return nullptr; }), true);
virtual std::string getName() const =0
SQLite connection with a small ORM layer on top of Poco::Data. Tables/columns are quoted identifiers;...
Definition Database.h:62
std::string queryJson(const std::string &sql)
Runs query() and serializes the rows to a JSON array.
Definition Database.cpp:119
std::vector< Row > query(const std::string &sql)
Runs a SELECT and returns every row as name/value maps.
Definition Database.cpp:103
Query * from(std::string table)
Builds a fluent Query builder for a table.
Definition Database.cpp:173
std::vector< Row > queryByKey(const std::string &table, const std::string &key, const Value &id)
Selects rows where key == id.
Definition Database.cpp:165
int update(const std::string &table, const Row &values, const std::string &whereClause)
Updates rows matching whereClause; returns the affected row count.
Definition Database.cpp:135
int insert(const std::string &table, const Row &values)
Inserts a row map; returns the affected row count.
Definition Database.cpp:121
int remove(const std::string &table, const std::string &whereClause)
Deletes rows matching whereClause; returns the affected row count.
Definition Database.cpp:146
int removeByKey(const std::string &table, const std::string &key, const Value &id)
Deletes a single row by primary key value.
Definition Database.cpp:161
Connection(std::string connector, std::string connectionString)
Opens a Poco::Data session; connector is e.g. "SQLite".
Definition Database.cpp:87
Model * model(std::string table, std::string primaryKey="id")
Builds a script-facing Model repository for a table.
Definition Database.cpp:170
int execute(const std::string &sql)
Executes a statement; returns the affected row count.
Definition Database.cpp:98
int updateJson(const std::string &table, const std::string &json, const std::string &whereClause)
Script-friendly update; whereClause is raw SQL.
Definition Database.cpp:153
int insertJson(const std::string &table, const std::string &json)
Script-friendly insert: JSON must be an object of column/value pairs.
Definition Database.cpp:150
int updateByKey(const std::string &table, const Row &values, const std::string &key, const Value &id)
Updates a single row by primary key value.
Definition Database.cpp:157
Database module (eve.Database): SQLite connection factory. Script: db <- eve.Database(); conn <- db....
Definition Database.h:242
Connection * connectSQLite(std::string path)
Opens a SQLite database file (":memory:" is supported).
Definition Database.cpp:260
Connection * connect(std::string connector, std::string connectionString)
Opens a connection with an explicit Poco connector name.
Definition Database.cpp:257
int updateJson(const std::string &idJson, const std::string &json)
Definition Database.cpp:248
Model(Connection *connection, std::string table, std::string primaryKey)
Definition Database.cpp:238
std::string findJson(const std::string &idJson)
Definition Database.cpp:245
Composable filtered/sorted/paged query shared by C++ and scripts.
Definition Database.h:133
Query(Connection *connection, std::string table)
Definition Database.cpp:175
Query * orderBy(const std::string &column, bool ascending=true)
Definition Database.cpp:191
Query * where(const std::string &column, const std::string &op, Value value)
Definition Database.cpp:179
Query * whereJson(const std::string &column, const std::string &op, const std::string &valueJson)
Definition Database.cpp:187
Definition Database.cpp:17
std::variant< std::monostate, std::int64_t, double, std::string, bool > Value
Definition Database.h:24