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-12 18:54:26 +0300
commit0f0fd1400586219e61937ee852f654ca8cf9a45d (patch)
treec64bb1e823e470bad87b7d3f60a564d86ea1222f /platform/default/src/mbgl/storage/offline_database.cpp
parent844299f1c3b22eed4bf07c37052b3c2ea35e2564 (diff)
downloadqtlocation-mapboxgl-0f0fd1400586219e61937ee852f654ca8cf9a45d.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