summaryrefslogtreecommitdiff
path: root/platform/default/mbgl/storage/offline_database.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/default/mbgl/storage/offline_database.cpp')
-rw-r--r--platform/default/mbgl/storage/offline_database.cpp21
1 files changed, 11 insertions, 10 deletions
diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp
index aac5e4a54c..983b84a3b4 100644
--- a/platform/default/mbgl/storage/offline_database.cpp
+++ b/platform/default/mbgl/storage/offline_database.cpp
@@ -39,11 +39,16 @@ OfflineDatabase::~OfflineDatabase() {
}
}
+void OfflineDatabase::connect(int flags) {
+ db = std::make_unique<Database>(path.c_str(), flags);
+ db->setBusyTimeout(Milliseconds::max());
+ db->exec("PRAGMA foreign_keys = ON");
+}
+
void OfflineDatabase::ensureSchema() {
if (path != ":memory:") {
try {
- db = std::make_unique<Database>(path.c_str(), ReadWrite);
- db->setBusyTimeout(Milliseconds::max());
+ connect(ReadWrite);
{
auto userVersionStmt = db->prepare("PRAGMA user_version");
@@ -57,24 +62,20 @@ void OfflineDatabase::ensureSchema() {
}
removeExisting();
- db = std::make_unique<Database>(path.c_str(), ReadWrite | Create);
- db->setBusyTimeout(Milliseconds::max());
+ connect(ReadWrite | Create);
} catch (mapbox::sqlite::Exception& ex) {
if (ex.code == SQLITE_CANTOPEN) {
- db = std::make_unique<Database>(path.c_str(), ReadWrite | Create);
- db->setBusyTimeout(Milliseconds::max());
+ connect(ReadWrite | Create);
} else if (ex.code == SQLITE_NOTADB) {
removeExisting();
- db = std::make_unique<Database>(path.c_str(), ReadWrite | Create);
- db->setBusyTimeout(Milliseconds::max());
+ connect(ReadWrite | Create);
}
}
}
#include "offline_schema.cpp.include"
- db = std::make_unique<Database>(path.c_str(), ReadWrite | Create);
- db->setBusyTimeout(Milliseconds::max());
+ connect(ReadWrite | Create);
db->exec(schema);
db->exec("PRAGMA user_version = " + util::toString(schemaVersion));
}