Loading include/database.h +4 −0 Original line number Diff line number Diff line Loading @@ -168,4 +168,8 @@ namespace dbpp { std::vector<std::unique_ptr<Database>> _replicas; }; std::string quoteIdentifier(const char *driver, const std::string &identifier); std::string quoteIdentifier(const Database &db, const std::string &identifier); std::string quoteIdentifier(const ReplicatedDatabase &db, const std::string &identifier); }; src/database.cpp +23 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <algorithm> #include <iterator> #include <cstdio> #include <cstring> #include "database.h" Loading Loading @@ -95,6 +96,28 @@ const char* dbpp::SQL::escaped(std::vector<char> &buf,const char *text){ return buf.data(); } std::string dbpp::quoteIdentifier(const char *driver, const std::string &identifier) { const char quote = driver && (std::strcmp(driver, "mariadb") == 0 || std::strcmp(driver, "mysql") == 0) ? '`' : '"'; std::string result; result.reserve(identifier.size() + 2); result.push_back(quote); for (char c : identifier) { if (c == quote) result.push_back(quote); result.push_back(c); } result.push_back(quote); return result; } std::string dbpp::quoteIdentifier(const Database &db, const std::string &identifier) { return quoteIdentifier(db.getDriverName(), identifier); } std::string dbpp::quoteIdentifier(const ReplicatedDatabase &db, const std::string &identifier) { return quoteIdentifier(db.getDriverName(), identifier); } const char * dbpp::SQL::c_str() const{ return _SQL.data(); Loading Loading
include/database.h +4 −0 Original line number Diff line number Diff line Loading @@ -168,4 +168,8 @@ namespace dbpp { std::vector<std::unique_ptr<Database>> _replicas; }; std::string quoteIdentifier(const char *driver, const std::string &identifier); std::string quoteIdentifier(const Database &db, const std::string &identifier); std::string quoteIdentifier(const ReplicatedDatabase &db, const std::string &identifier); };
src/database.cpp +23 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <algorithm> #include <iterator> #include <cstdio> #include <cstring> #include "database.h" Loading Loading @@ -95,6 +96,28 @@ const char* dbpp::SQL::escaped(std::vector<char> &buf,const char *text){ return buf.data(); } std::string dbpp::quoteIdentifier(const char *driver, const std::string &identifier) { const char quote = driver && (std::strcmp(driver, "mariadb") == 0 || std::strcmp(driver, "mysql") == 0) ? '`' : '"'; std::string result; result.reserve(identifier.size() + 2); result.push_back(quote); for (char c : identifier) { if (c == quote) result.push_back(quote); result.push_back(c); } result.push_back(quote); return result; } std::string dbpp::quoteIdentifier(const Database &db, const std::string &identifier) { return quoteIdentifier(db.getDriverName(), identifier); } std::string dbpp::quoteIdentifier(const ReplicatedDatabase &db, const std::string &identifier) { return quoteIdentifier(db.getDriverName(), identifier); } const char * dbpp::SQL::c_str() const{ return _SQL.data(); Loading