summaryrefslogtreecommitdiff
path: root/platform/default/sqlite3.cpp
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2017-01-04 11:09:45 -0400
committerBruno de Oliveira Abinader <bruno@mapbox.com>2017-01-23 19:06:53 +0200
commit80d72123dfe3cb9f560b6a150a998eeda480b9de (patch)
treef002717a45c7179e66b02c630b94eca5dbb5f047 /platform/default/sqlite3.cpp
parent97b433edc99f5b7212915aab483e119f60fde101 (diff)
downloadqtlocation-mapboxgl-80d72123dfe3cb9f560b6a150a998eeda480b9de.tar.gz
[core] Move lastInsertRowId/changes to sqlite::Statement
Diffstat (limited to 'platform/default/sqlite3.cpp')
-rw-r--r--platform/default/sqlite3.cpp25
1 files changed, 15 insertions, 10 deletions
diff --git a/platform/default/sqlite3.cpp b/platform/default/sqlite3.cpp
index 8e882f4455..251433638a 100644
--- a/platform/default/sqlite3.cpp
+++ b/platform/default/sqlite3.cpp
@@ -56,6 +56,8 @@ public:
}
sqlite3_stmt* stmt = nullptr;
+ int64_t lastInsertRowId = 0;
+ int64_t changes = 0;
};
template <typename T>
@@ -133,16 +135,6 @@ Statement Database::prepare(const char *query) {
return Statement(this, query);
}
-int64_t Database::lastInsertRowid() const {
- assert(impl);
- return sqlite3_last_insert_rowid(impl->db);
-}
-
-uint64_t Database::changes() const {
- assert(impl);
- return sqlite3_changes(impl->db);
-}
-
Statement::Statement(Database *db, const char *sql)
: impl(std::make_unique<StatementImpl>(db->impl->db, sql))
{
@@ -292,6 +284,8 @@ void Statement::bind(
bool Statement::run() {
assert(impl);
const int err = sqlite3_step(impl->stmt);
+ impl->lastInsertRowId = sqlite3_last_insert_rowid(sqlite3_db_handle(impl->stmt));
+ impl->changes = sqlite3_changes(sqlite3_db_handle(impl->stmt));
if (err == SQLITE_DONE) {
return false;
} else if (err == SQLITE_ROW) {
@@ -390,6 +384,17 @@ void Statement::clearBindings() {
sqlite3_clear_bindings(impl->stmt);
}
+int64_t Statement::lastInsertRowId() const {
+ assert(impl);
+ return impl->lastInsertRowId;
+}
+
+uint64_t Statement::changes() const {
+ assert(impl);
+ auto changes = impl->changes;
+ return (changes < 0 ? 0 : changes);
+}
+
Transaction::Transaction(Database& db_, Mode mode)
: db(db_) {
switch (mode) {