summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorMolly Lloyd <mollymerp@users.noreply.github.com>2016-09-20 11:43:00 -0400
committerTobrun <tobrun.van.nuland@gmail.com>2016-09-20 17:43:00 +0200
commit598f7c6ad5147417c7241514f1fdece348a9b997 (patch)
tree0e238b65c58cd0cd3cb5b9f10a12c35715ae9969 /platform
parent97da3872737ea08bdb2f50a22baf08aab123fafb (diff)
downloadqtlocation-mapboxgl-598f7c6ad5147417c7241514f1fdece348a9b997.tar.gz
[core] allow offline region metadata to be updated (#6338)
Diffstat (limited to 'platform')
-rw-r--r--platform/default/default_file_source.cpp16
-rw-r--r--platform/default/mbgl/storage/offline_database.cpp13
-rw-r--r--platform/default/mbgl/storage/offline_database.hpp2
3 files changed, 31 insertions, 0 deletions
diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp
index 83674cea03..099890a035 100644
--- a/platform/default/default_file_source.cpp
+++ b/platform/default/default_file_source.cpp
@@ -62,6 +62,16 @@ public:
callback(std::current_exception(), {});
}
}
+
+ void updateMetadata(const int64_t regionID,
+ const OfflineRegionMetadata& metadata,
+ std::function<void (std::exception_ptr, optional<OfflineRegionMetadata>)> callback) {
+ try {
+ callback({}, offlineDatabase.updateMetadata(regionID, metadata));
+ } catch (...) {
+ callback(std::current_exception(), {});
+ }
+ }
void getRegionStatus(int64_t regionID, std::function<void (std::exception_ptr, optional<OfflineRegionStatus>)> callback) {
try {
@@ -208,6 +218,12 @@ void DefaultFileSource::createOfflineRegion(const OfflineRegionDefinition& defin
thread->invoke(&Impl::createRegion, definition, metadata, callback);
}
+void DefaultFileSource::updateOfflineMetadata(const int64_t regionID,
+ const OfflineRegionMetadata& metadata,
+ std::function<void (std::exception_ptr, optional<OfflineRegionMetadata>)> callback) {
+ thread->invoke(&Impl::updateMetadata, regionID, metadata, callback);
+}
+
void DefaultFileSource::deleteOfflineRegion(OfflineRegion&& region, std::function<void (std::exception_ptr)> callback) {
thread->invoke(&Impl::deleteRegion, std::move(region), callback);
}
diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp
index 40296307cc..b2ed16db56 100644
--- a/platform/default/mbgl/storage/offline_database.cpp
+++ b/platform/default/mbgl/storage/offline_database.cpp
@@ -523,6 +523,19 @@ OfflineRegion OfflineDatabase::createRegion(const OfflineRegionDefinition& defin
return OfflineRegion(db->lastInsertRowid(), definition, metadata);
}
+OfflineRegionMetadata OfflineDatabase::updateMetadata(const int64_t regionID, const OfflineRegionMetadata& metadata) {
+ // clang-format off
+ Statement stmt = getStatement(
+ "UPDATE regions SET description = ?1"
+ "WHERE id = ?2");
+ // clang-format on
+ stmt->bindBlob(1, metadata);
+ stmt->bind(2, regionID);
+ stmt->run();
+
+ return metadata;
+}
+
void OfflineDatabase::deleteRegion(OfflineRegion&& region) {
// clang-format off
Statement stmt = getStatement(
diff --git a/platform/default/mbgl/storage/offline_database.hpp b/platform/default/mbgl/storage/offline_database.hpp
index 6873bc74dc..011817fbee 100644
--- a/platform/default/mbgl/storage/offline_database.hpp
+++ b/platform/default/mbgl/storage/offline_database.hpp
@@ -40,6 +40,8 @@ public:
OfflineRegion createRegion(const OfflineRegionDefinition&,
const OfflineRegionMetadata&);
+ OfflineRegionMetadata updateMetadata(const int64_t regionID, const OfflineRegionMetadata&);
+
void deleteRegion(OfflineRegion&&);
// Return value is (response, stored size)