Commit 3a89d761 authored by jan.koester's avatar jan.koester
Browse files

test

parent d095c65c
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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);

};
+23 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include <algorithm>
#include <iterator>
#include <cstdio>
#include <cstring>

#include "database.h"

@@ -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();