summaryrefslogtreecommitdiff
path: root/platform/default/src/mbgl/storage/offline_database.cpp
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <tmpsantos@gmail.com>2019-06-10 14:40:48 +0300
committerThiago Marcos P. Santos <tmpsantos@gmail.com>2019-06-13 22:28:16 +0300
commit32e0b7beec8ee1229cc6b1b1a4b857a459547b55 (patch)
tree621de8c60442bfa3b07abbf0ac4c576fdb5da721 /platform/default/src/mbgl/storage/offline_database.cpp
parent427e6e7615ac6b6739b0ad830a3a18abd8b0ba21 (diff)
downloadqtlocation-mapboxgl-32e0b7beec8ee1229cc6b1b1a4b857a459547b55.tar.gz
[core] Add API for clearing tile cache
Diffstat (limited to 'platform/default/src/mbgl/storage/offline_database.cpp')
-rw-r--r--platform/default/src/mbgl/storage/offline_database.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/platform/default/src/mbgl/storage/offline_database.cpp b/platform/default/src/mbgl/storage/offline_database.cpp
index 0b3bcc049f..b60828d3a7 100644
--- a/platform/default/src/mbgl/storage/offline_database.cpp
+++ b/platform/default/src/mbgl/storage/offline_database.cpp
@@ -624,6 +624,26 @@ std::exception_ptr OfflineDatabase::invalidateTileCache() try {
return std::current_exception();
}
+std::exception_ptr OfflineDatabase::clearTileCache() try {
+ // clang-format off
+ mapbox::sqlite::Query query{ getStatement(
+ "DELETE FROM tiles "
+ "WHERE id NOT IN ("
+ " SELECT tile_id FROM region_tiles"
+ ")"
+ ) };
+ // clang-format on
+
+ query.run();
+
+ db->exec("PRAGMA incremental_vacuum");
+
+ return nullptr;
+} catch (const mapbox::sqlite::Exception& ex) {
+ handleError(ex, "clear tile cache");
+ return std::current_exception();
+}
+
std::exception_ptr OfflineDatabase::invalidateRegion(int64_t regionID) try {
{
// clang-format off