3#include <QtCore/QByteArray>
4#include <QtCore/QString>
5#include <QtSql/QSqlDatabase>
32 bool saveTile(
const QString &hash,
const QString &format,
const QByteArray &img,
const QString &type, quint64 tileSet);
33 std::unique_ptr<QGCCacheTile>
getTile(
const QString &hash);
34 std::optional<quint64>
findTile(
const QString &hash);
38 std::optional<quint64>
createTileSet(
const QString &name,
const QString &mapTypeStr,
39 double topleftLat,
double topleftLon,
40 double bottomRightLat,
double bottomRightLon,
41 int minZoom,
int maxZoom,
const QString &type, quint32 numTiles);
71 bool _ensureConnected()
const;
72 QSqlDatabase _database()
const;
73 bool _checkSchemaVersion();
74 bool _createDB(QSqlDatabase db,
bool createDefault =
true);
75 quint64 _getDefaultTileSet();
76 bool _deleteTilesByIDs(
const QList<quint64> &ids);
77 QString _deduplicateSetName(
const QString &name);
78 quint64 _copyTilesForSet(QSqlDatabase srcDB, quint64 srcSetID, quint64 dstSetID,
79 quint64 ¤tCount, quint64 tileCount,
81 quint64 *tilesIteratedOut,
bool useTransaction =
true);
83 QString _databasePath;
84 QString _connectionName;
86 bool _connected =
false;
89 static constexpr int kPruneBatchSize = 128;
90 static constexpr const char *kUniqueTilesSubquery =
91 "SELECT A.tileID FROM SetTiles A JOIN SetTiles B ON A.tileID = B.tileID "
92 "WHERE B.setID = ? GROUP BY A.tileID HAVING COUNT(A.tileID) = 1";
std::function< void(int)> ProgressCallback
std::optional< quint64 > findTileSetID(const QString &name)
std::optional< quint64 > createTileSet(const QString &name, const QString &mapTypeStr, double topleftLat, double topleftLon, double bottomRightLat, double bottomRightLon, int minZoom, int maxZoom, const QString &type, quint32 numTiles)
bool updateAllTileDownloadStates(quint64 setID, int state)
bool pruneCache(quint64 amount)
std::unique_ptr< QGCCacheTile > getTile(const QString &hash)
bool deleteTileSet(quint64 id)
void deleteBingNoTileTiles()
SetTotalsResult computeSetTotals(quint64 setID, bool isDefault, quint32 totalTileCount, const QString &type)
DatabaseResult exportSets(const QList< TileSetRecord > &sets, const QString &path, ProgressCallback progressCb)
static constexpr quint64 kInvalidTileSet
bool updateTileDownloadState(quint64 setID, int state, const QString &hash)
static constexpr const char * kBingNoTileDoneKey
DatabaseResult importSetsReplace(const QString &path, ProgressCallback progressCb)
QList< QGCTile > getTileDownloadList(quint64 setID, int count)
bool renameTileSet(quint64 setID, const QString &newName)
static constexpr int kSchemaVersion
QSqlDatabase database() const
QList< TileSetRecord > getTileSets()
bool saveTile(const QString &hash, const QString &format, const QByteArray &img, const QString &type, quint64 tileSet)
DatabaseResult importSetsMerge(const QString &path, ProgressCallback progressCb)
TotalsResult computeTotals()
std::optional< quint64 > findTile(const QString &hash)