summaryrefslogtreecommitdiff
path: root/src/mbgl/util/sqlite3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/util/sqlite3.cpp')
-rw-r--r--src/mbgl/util/sqlite3.cpp165
1 files changed, 0 insertions, 165 deletions
diff --git a/src/mbgl/util/sqlite3.cpp b/src/mbgl/util/sqlite3.cpp
deleted file mode 100644
index 787db83992..0000000000
--- a/src/mbgl/util/sqlite3.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-#include <mbgl/util/sqlite3.hpp>
-#include <sqlite3.h>
-
-#include <cassert>
-
-namespace mapbox {
-namespace sqlite {
-
-Database::Database(const std::string &filename, int flags) {
- const int err = sqlite3_open_v2(filename.c_str(), &db, flags, nullptr);
- if (err != SQLITE_OK) {
- Exception ex { err, sqlite3_errmsg(db) };
- db = nullptr;
- throw ex;
- }
-}
-
-Database::Database(Database &&other)
- : db(std::move(other.db)) {}
-
-Database &Database::operator=(Database &&other) {
- std::swap(db, other.db);
- return *this;
-}
-
-Database::~Database() {
- if (db) {
- const int err = sqlite3_close(db);
- if (err != SQLITE_OK) {
- throw Exception { err, sqlite3_errmsg(db) };
- }
- }
-}
-
-Database::operator bool() const {
- return db != nullptr;
-}
-
-void Database::exec(const std::string &sql) {
- assert(db);
- char *msg = nullptr;
- const int err = sqlite3_exec(db, sql.c_str(), nullptr, nullptr, &msg);
- if (msg) {
- Exception ex { err, msg };
- sqlite3_free(msg);
- throw ex;
- } else if (err != SQLITE_OK) {
- throw Exception { err, sqlite3_errmsg(db) };
- }
-}
-
-Statement Database::prepare(const char *query) {
- assert(db);
- return std::move(Statement(db, query));
-}
-
-Statement::Statement(sqlite3 *db, const char *sql) {
- const int err = sqlite3_prepare_v2(db, sql, -1, &stmt, nullptr);
- if (err != SQLITE_OK) {
- stmt = nullptr;
- throw Exception { err, sqlite3_errmsg(db) };
- }
-}
-
-#define CHECK_SQLITE_OK(err) \
- if (err != SQLITE_OK) { \
- throw Exception { err, sqlite3_errmsg(sqlite3_db_handle(stmt)) }; \
- }
-
-Statement::Statement(Statement &&other) {
- *this = std::move(other);
-}
-
-Statement &Statement::operator=(Statement &&other) {
- std::swap(stmt, other.stmt);
- return *this;
-}
-
-Statement::~Statement() {
- if (stmt) {
- const int err = sqlite3_finalize(stmt);
- CHECK_SQLITE_OK(err)
- }
-}
-
-Statement::operator bool() const {
- return stmt != nullptr;
-}
-
-#define BIND_3(type, value) \
- assert(stmt); \
- const int err = sqlite3_bind_##type(stmt, offset, value); \
- CHECK_SQLITE_OK(err)
-
-#define BIND_5(type, value, length, param) \
- assert(stmt); \
- const int err = sqlite3_bind_##type(stmt, offset, value, length, param); \
- CHECK_SQLITE_OK(err)
-
-template <> void Statement::bind(int offset, int value) {
- BIND_3(int, value)
-}
-
-template <> void Statement::bind(int offset, int64_t value) {
- BIND_3(int64, value)
-}
-
-template <> void Statement::bind(int offset, double value) {
- BIND_3(double, value)
-}
-
-template <> void Statement::bind(int offset, bool value) {
- BIND_3(int, value)
-}
-
-template <> void Statement::bind(int offset, const char *value) {
- BIND_5(text, value, -1, nullptr)
-}
-
-void Statement::bind(int offset, const std::string &value, bool retain) {
- BIND_5(blob, value.data(), int(value.size()), retain ? SQLITE_TRANSIENT : SQLITE_STATIC)
-}
-
-bool Statement::run() {
- assert(stmt);
- const int err = sqlite3_step(stmt);
- if (err == SQLITE_DONE) {
- return false;
- } else if (err == SQLITE_ROW) {
- return true;
- } else {
- throw std::runtime_error("failed to run statement");
- }
-}
-
-template <> int Statement::get(int offset) {
- assert(stmt);
- return sqlite3_column_int(stmt, offset);
-}
-
-template <> int64_t Statement::get(int offset) {
- assert(stmt);
- return sqlite3_column_int64(stmt, offset);
-}
-
-template <> double Statement::get(int offset) {
- assert(stmt);
- return sqlite3_column_double(stmt, offset);
-}
-
-template <> std::string Statement::get(int offset) {
- assert(stmt);
- return {
- reinterpret_cast<const char *>(sqlite3_column_blob(stmt, offset)),
- size_t(sqlite3_column_bytes(stmt, offset))
- };
-}
-
-void Statement::reset() {
- assert(stmt);
- sqlite3_reset(stmt);
-}
-
-}
-}