summaryrefslogtreecommitdiff
path: root/platform/default
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-04-27 12:10:00 -0700
committerMinh Nguyễn <mxn@1ec5.org>2016-04-27 13:41:29 -0700
commitb39f22e6b6bbea745be5bbac700040001af86baa (patch)
tree5d9e2aaa4f1b63c7e39c0883aa5e0540b33a59b6 /platform/default
parenta706a2a48d6ca2076c9c81a0cb0c088ae50d1496 (diff)
downloadqtlocation-mapboxgl-b39f22e6b6bbea745be5bbac700040001af86baa.tar.gz
[core] Refactor getRegionCompletedStatus; add completedTileCount; add tests
Diffstat (limited to 'platform/default')
-rw-r--r--platform/default/mbgl/storage/offline_database.cpp52
-rw-r--r--platform/default/mbgl/storage/offline_database.hpp3
2 files changed, 32 insertions, 23 deletions
diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp
index 9bd731df74..7826d140a1 100644
--- a/platform/default/mbgl/storage/offline_database.cpp
+++ b/platform/default/mbgl/storage/offline_database.cpp
@@ -608,33 +608,39 @@ OfflineRegionDefinition OfflineDatabase::getRegionDefinition(int64_t regionID) {
OfflineRegionStatus OfflineDatabase::getRegionCompletedStatus(int64_t regionID) {
OfflineRegionStatus result;
- Statement stmtRes = getStatement(
- "SELECT COUNT(*), SUM(size) FROM ( "
- " SELECT LENGTH(data) as size "
- " FROM region_resources, resources "
- " WHERE region_id = ?1 "
- " AND resource_id = resources.id "
- ") ");
- stmtRes->bind(1, regionID);
- stmtRes->run();
-
- Statement stmtTile = getStatement(
- "SELECT COUNT(*), SUM(size) FROM ( "
- " SELECT LENGTH(data) as size "
- " FROM region_tiles, tiles "
- " WHERE region_id = ?1 "
- " AND tile_id = tiles.id "
- ") ");
- stmtTile->bind(1, regionID);
- stmtTile->run();
-
- result.completedTileSize = stmtTile->get<int64_t>(1);
- result.completedResourceCount = stmtTile->get<int64_t>(0) + stmtRes->get<int64_t>(0);
- result.completedResourceSize = result.completedTileSize + stmtRes->get<int64_t>(1);
+ std::tie(result.completedResourceCount, result.completedResourceSize)
+ = getCompletedResourceCountAndSize(regionID);
+ std::tie(result.completedTileCount, result.completedTileSize)
+ = getCompletedTileCountAndSize(regionID);
+
+ result.completedResourceCount += result.completedTileCount;
+ result.completedResourceSize += result.completedTileSize;
return result;
}
+std::pair<int64_t, int64_t> OfflineDatabase::getCompletedResourceCountAndSize(int64_t regionID) {
+ Statement stmt = getStatement(
+ "SELECT COUNT(*), SUM(LENGTH(data)) "
+ "FROM region_resources, resources "
+ "WHERE region_id = ?1 "
+ "AND resource_id = resources.id ");
+ stmt->bind(1, regionID);
+ stmt->run();
+ return { stmt->get<int64_t>(0), stmt->get<int64_t>(1) };
+}
+
+std::pair<int64_t, int64_t> OfflineDatabase::getCompletedTileCountAndSize(int64_t regionID) {
+ Statement stmt = getStatement(
+ "SELECT COUNT(*), SUM(LENGTH(data)) "
+ "FROM region_tiles, tiles "
+ "WHERE region_id = ?1 "
+ "AND tile_id = tiles.id ");
+ stmt->bind(1, regionID);
+ stmt->run();
+ return { stmt->get<int64_t>(0), stmt->get<int64_t>(1) };
+}
+
template <class T>
T OfflineDatabase::getPragma(const char * sql) {
Statement stmt = getStatement(sql);
diff --git a/platform/default/mbgl/storage/offline_database.hpp b/platform/default/mbgl/storage/offline_database.hpp
index 1e77d560d4..06c44c80be 100644
--- a/platform/default/mbgl/storage/offline_database.hpp
+++ b/platform/default/mbgl/storage/offline_database.hpp
@@ -92,6 +92,9 @@ private:
// Return value is true iff the resource was previously unused by any other regions.
bool markUsed(int64_t regionID, const Resource&);
+ std::pair<int64_t, int64_t> getCompletedResourceCountAndSize(int64_t regionID);
+ std::pair<int64_t, int64_t> getCompletedTileCountAndSize(int64_t regionID);
+
const std::string path;
std::unique_ptr<::mapbox::sqlite::Database> db;
std::unordered_map<const char *, std::unique_ptr<::mapbox::sqlite::Statement>> statements;