diff options
author | Molly Lloyd <mollymerp@users.noreply.github.com> | 2016-09-20 11:43:00 -0400 |
---|---|---|
committer | Tobrun <tobrun.van.nuland@gmail.com> | 2016-09-20 17:43:00 +0200 |
commit | 598f7c6ad5147417c7241514f1fdece348a9b997 (patch) | |
tree | 0e238b65c58cd0cd3cb5b9f10a12c35715ae9969 /platform | |
parent | 97da3872737ea08bdb2f50a22baf08aab123fafb (diff) | |
download | qtlocation-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.cpp | 16 | ||||
-rw-r--r-- | platform/default/mbgl/storage/offline_database.cpp | 13 | ||||
-rw-r--r-- | platform/default/mbgl/storage/offline_database.hpp | 2 |
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) |