[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-kimageshop
Subject: =?utf-8?q?=5Bgraphics/krita=5D_libs/resources=3A_Rename_versioned=5Fresources=2Elocation_to_versione
From: Halla Rempt <null () kde ! org>
Date: 2021-01-28 12:58:13
Message-ID: 20210128125813.D068612400A4 () leptone ! kde ! org
[Download RAW message or body]
Git commit 3e0bf9412cb2363576f6751700bfd58411d7a2f1 by Halla Rempt.
Committed on 28/01/2021 at 12:53.
Pushed by rempt into branch 'master'.
Rename versioned_resources.location to versioned_resources.version
And remove resources.version.
This updates the database schema version.
CCMAIL:kimageshop@kde.org
M +16 -18 libs/resources/KisResourceCacheDb.cpp
M +3 -3 libs/resources/KisResourceLocator.cpp
M +0 -9 libs/resources/KisResourceModel.cpp
M +18 -15 libs/resources/KisResourceQueryMapper.cpp
M +0 -1 libs/resources/sql/create_resources.sql
M +1 -1 libs/resources/sql/create_versioned_resources.sql
https://invent.kde.org/graphics/krita/commit/3e0bf9412cb2363576f6751700bfd58411d7a2f1
diff --git a/libs/resources/KisResourceCacheDb.cpp \
b/libs/resources/KisResourceCacheDb.cpp index 8591de2058..ef630fa162 100644
--- a/libs/resources/KisResourceCacheDb.cpp
+++ b/libs/resources/KisResourceCacheDb.cpp
@@ -33,7 +33,7 @@ const QString dbDriver = "QSQLITE";
const QString KisResourceCacheDb::dbLocationKey { "ResourceCacheDbDirectory" };
const QString KisResourceCacheDb::resourceCacheDbFilename { "resourcecache.sqlite" \
};
-const QString KisResourceCacheDb::databaseVersion { "0.0.4" };
+const QString KisResourceCacheDb::databaseVersion { "0.0.5" };
QStringList KisResourceCacheDb::storageTypes { QStringList() };
QStringList KisResourceCacheDb::disabledBundles { QStringList() << \
"Krita_3_Default_Resources.bundle" };
@@ -331,11 +331,11 @@ int KisResourceCacheDb::resourceIdForResource(const QString \
&resourceName, const ", versioned_resources\n"
", storages\n"
"WHERE resources.resource_type_id = resource_types.id\n" // \
join resources and resource_types by resource id
- "AND versioned_resources.resource_id = resources.id\n" // \
join versioned_resources and resources by resource id + "AND \
versioned_resources.resource_id = resources.id\n" // join versioned_resources and \
resources by resource id
"AND storages.id = versioned_resources.storage_id\n" // \
join storages and versioned_resources by storage id
"AND storages.location = :storage_location\n" // \
storage location must be the same as asked for
"AND resource_types.name = :resource_type\n" // \
resource type must be the same as asked for
- "AND versioned_resources.location = :filename\n")) { // \
location must be the same as asked for + "AND \
versioned_resources.filename = :filename\n")) { // filename must be the same as \
asked for
qWarning() << "Could not read and prepare resourceIdForResource (in \
versioned resources)" << q.lastError(); return -1;
}
@@ -422,14 +422,14 @@ bool KisResourceCacheDb::addResourceVersionImpl(int resourceId, \
QDateTime timest
QSqlQuery q;
r = q.prepare("INSERT INTO versioned_resources \n"
- "(resource_id, storage_id, version, location, timestamp, \
md5sum)\n" + "(resource_id, storage_id, version, filename, \
timestamp, md5sum)\n" "VALUES\n"
"( :resource_id\n"
", (SELECT id \n"
" FROM storages \n"
" WHERE location = :storage_location)\n"
", :version\n"
- ", :location\n"
+ ", :filename\n"
", :timestamp\n"
", :md5sum\n"
");");
@@ -442,7 +442,7 @@ bool KisResourceCacheDb::addResourceVersionImpl(int resourceId, \
QDateTime timest q.bindValue(":resource_id", resourceId);
q.bindValue(":storage_location", \
KisResourceLocator::instance()->makeStorageLocationRelative(storage->location())); \
q.bindValue(":version", resource->version());
- q.bindValue(":location", QFileInfo(resource->filename()).fileName());
+ q.bindValue(":filename", QFileInfo(resource->filename()).fileName());
q.bindValue(":timestamp", timestamp.toSecsSinceEpoch());
KIS_SAFE_ASSERT_RECOVER_NOOP(!resource->md5().isEmpty());
q.bindValue(":md5sum", resource->md5().toHex());
@@ -522,7 +522,7 @@ bool \
KisResourceCacheDb::updateResourceTableForResourceIfNeeded(int resourceId, QString \
maxVersionFilename; {
QSqlQuery q;
- r = q.prepare("SELECT location\n"
+ r = q.prepare("SELECT filename\n"
"FROM versioned_resources\n"
"WHERE resource_id = :resource_id\n"
"AND version = :version;");
@@ -550,9 +550,9 @@ bool \
KisResourceCacheDb::updateResourceTableForResourceIfNeeded(int resourceId, int \
currentVersion = -1; {
QSqlQuery q;
- r = q.prepare("SELECT version\n"
- "FROM resources\n"
- "WHERE id = :resource_id;");
+ r = q.prepare("SELECT MAX(versioned_resources.version)\n"
+ "FROM versioned_resources\n"
+ "WHERE versioned_resources.id = :resource_id;");
if (!r) {
qWarning() << "Could not prepare findMaxVersion statement" << \
q.lastError(); return r;
@@ -708,7 +708,7 @@ bool KisResourceCacheDb::addResource(KisResourceStorageSP \
storage, QDateTime tim
QSqlQuery q;
r = q.prepare("INSERT INTO resources \n"
- "(storage_id, resource_type_id, name, filename, tooltip, \
thumbnail, status, temporary, version) \n" + "(storage_id, \
resource_type_id, name, filename, tooltip, thumbnail, status, temporary) \n" "VALUES \
\n" "((SELECT id "
" FROM storages "
@@ -721,8 +721,7 @@ bool KisResourceCacheDb::addResource(KisResourceStorageSP \
storage, QDateTime tim ", :tooltip\n"
", :thumbnail\n"
", :status\n"
- ", :temporary\n"
- ", :version);");
+ ", :temporary)\n");
if (!r) {
qWarning() << "Could not prepare addResource statement" << q.lastError();
@@ -734,7 +733,6 @@ bool KisResourceCacheDb::addResource(KisResourceStorageSP \
storage, QDateTime tim q.bindValue(":name", resource->name());
q.bindValue(":filename", QFileInfo(resource->filename()).fileName());
q.bindValue(":tooltip", i18n(resource->name().toUtf8()));
- q.bindValue(":version", resource->version());
QByteArray ba;
QBuffer buf(&ba);
@@ -763,13 +761,13 @@ bool KisResourceCacheDb::addResource(KisResourceStorageSP \
storage, QDateTime tim
// Then add a new version
r = q.prepare("INSERT INTO versioned_resources\n"
- "(resource_id, storage_id, version, location, timestamp, \
md5sum)\n" + "(resource_id, storage_id, version, filename, \
timestamp, md5sum)\n" "VALUES\n"
"(:resource_id\n"
", (SELECT id FROM storages\n"
" WHERE location = :storage_location)\n"
", :version\n"
- ", :location\n"
+ ", :filename\n"
", :timestamp\n"
", :md5sum\n"
");");
@@ -782,7 +780,7 @@ bool KisResourceCacheDb::addResource(KisResourceStorageSP \
storage, QDateTime tim q.bindValue(":resource_id", resourceId);
q.bindValue(":storage_location", \
KisResourceLocator::instance()->makeStorageLocationRelative(storage->location())); \
q.bindValue(":version", resource->version());
- q.bindValue(":location", QFileInfo(resource->filename()).fileName());
+ q.bindValue(":filename", QFileInfo(resource->filename()).fileName());
q.bindValue(":timestamp", timestamp.toSecsSinceEpoch());
KIS_SAFE_ASSERT_RECOVER_NOOP(!resource->md5().isEmpty());
if (resource->md5().isEmpty()) {
@@ -1364,7 +1362,7 @@ bool \
KisResourceCacheDb::synchronizeStorage(KisResourceStorageSP storage)
QSqlQuery q;
q.setForwardOnly(true);
- if (!q.prepare("SELECT versioned_resources.resource_id, \
versioned_resources.location, versioned_resources.version, \
versioned_resources.timestamp\n" + if (!q.prepare("SELECT \
versioned_resources.resource_id, versioned_resources.filename, \
versioned_resources.version, versioned_resources.timestamp\n" "FROM \
versioned_resources\n" ", resource_types\n"
", resources\n"
diff --git a/libs/resources/KisResourceLocator.cpp \
b/libs/resources/KisResourceLocator.cpp index 6f15448daf..8c1153a116 100644
--- a/libs/resources/KisResourceLocator.cpp
+++ b/libs/resources/KisResourceLocator.cpp
@@ -198,7 +198,7 @@ KoResourceSP KisResourceLocator::resource(QString \
storageLocation, const QString if (resource->resourceId() < 0 || resource->version() \
< 0) { QSqlQuery q;
if (!q.prepare("SELECT resources.id\n"
- ", resources.version\n"
+ ", versioned_resources.version\n"
", versioned_resources.md5sum\n"
"FROM resources\n"
", storages\n"
@@ -210,7 +210,7 @@ KoResourceSP KisResourceLocator::resource(QString \
storageLocation, const QString "AND resource_types.name = :resource_type\n"
"AND resources.filename = :filename\n"
"AND versioned_resources.resource_id = resources.id\n"
- "AND versioned_resources.version = resources.version")) {
+ "AND versioned_resources.version = (SELECT MAX(version) \
FROM versioned_resources WHERE versioned_resources.resource_id = \
resources.id)")) {
qWarning() << "Could not prepare id/version query" << q.lastError();
}
@@ -220,7 +220,7 @@ KoResourceSP KisResourceLocator::resource(QString \
storageLocation, const QString q.bindValue(":filename", filename);
if (!q.exec()) {
- qWarning() << "Could not execute id/version quert" << q.lastError() << \
q.boundValues(); + qWarning() << "Could not execute id/version query" << \
q.lastError() << q.boundValues(); }
if (!q.first()) {
diff --git a/libs/resources/KisResourceModel.cpp \
b/libs/resources/KisResourceModel.cpp index 9cfbdcfb57..1101087f16 100644
--- a/libs/resources/KisResourceModel.cpp
+++ b/libs/resources/KisResourceModel.cpp
@@ -50,7 +50,6 @@ KisAllResourcesModel::KisAllResourcesModel(const QString \
&resourceType, QObject ", resources.thumbnail\n"
", resources.status\n"
", storages.location\n"
- ", resources.version\n"
", resource_types.name as \
resource_type\n"
", resources.status as \
resource_active\n"
", storages.active as storage_active\n"
@@ -467,26 +466,18 @@ int KisAllResourcesModel::rowCount(const QModelIndex &) const
void KisAllResourcesModel::addStorage(const QString &/*location*/)
{
- qDebug() << "KisAllResourcesModel::addStorage" << rowCount();
-
beginResetModel();
resetQuery();
endResetModel();
-
- qDebug() << "\t\t" << rowCount();
}
void KisAllResourcesModel::removeStorage(const QString &/*location*/)
{
- qDebug() << "KisAllResourcesModel::removeStorage" << rowCount();
-
beginResetModel();
resetQuery();
endResetModel();
-
- qDebug() << "\t\t" << rowCount();
}
struct KisResourceModel::Private
diff --git a/libs/resources/KisResourceQueryMapper.cpp \
b/libs/resources/KisResourceQueryMapper.cpp index ab20126db4..6f21e292ef 100644
--- a/libs/resources/KisResourceQueryMapper.cpp
+++ b/libs/resources/KisResourceQueryMapper.cpp
@@ -155,21 +155,24 @@ QVariant \
KisResourceQueryMapper::variantFromResourceQueryById(int resourceId, in
QSqlQuery q;
if (!q.prepare("SELECT resources.id\n"
- ", resources.storage_id\n"
- ", resources.name\n"
- ", resources.filename\n"
- ", resources.tooltip\n"
- ", resources.thumbnail\n"
- ", resources.status\n"
- ", storages.location\n"
- ", resources.version\n"
- ", resource_types.name as resource_type\n"
- ", resources.status as resource_active\n"
- ", storages.active as storage_active\n"
- "FROM resources\n"
- ", resource_types\n"
- ", storages\n"
- "WHERE resources.id = :resource_id"))
+ ", resources.storage_id\n"
+ ", resources.name\n"
+ ", resources.filename\n"
+ ", resources.tooltip\n"
+ ", resources.thumbnail\n"
+ ", resources.status\n"
+ ", storages.location\n"
+ ", versioned_resources.version\n"
+ ", resource_types.name as resource_type\n"
+ ", resources.status as resource_active\n"
+ ", storages.active as storage_active\n"
+ "FROM resources\n"
+ ", resource_types\n"
+ ", storages\n"
+ ", versioned_resources\n"
+ "WHERE resources.id = :resource_id\n"
+ "AND versioned_resources.resource_id = resources.id\n"
+ "AND versioned_resources.version = (SELECT MAX(version) FROM \
versioned_resources WHERE versioned_resources.resource_id = resources.id)")) {
qWarning() << "Could not prepare variantFromResourceQueryById query" << \
q.lastError(); return v;
diff --git a/libs/resources/sql/create_resources.sql \
b/libs/resources/sql/create_resources.sql index 48347aa1fd..8e6fa6d3fe 100644
--- a/libs/resources/sql/create_resources.sql
+++ b/libs/resources/sql/create_resources.sql
@@ -8,7 +8,6 @@ CREATE TABLE IF NOT EXISTS resources (
, thumbnail BLOB /* the image representing the resource visually*/
, status INTEGER /* active resources are visible in the UI, inactive \
resources are considered "deleted" */ , temporary INTEGER /* temporary \
resources are removed from the database on startup */
-, version INTEGER /* the current version number of the resource (cached \
for performance reasons */ , FOREIGN KEY(resource_type_id) REFERENCES \
resource_types(id) , UNIQUE(storage_id, resource_type_id, name, filename)
);
diff --git a/libs/resources/sql/create_versioned_resources.sql \
b/libs/resources/sql/create_versioned_resources.sql index 1a5691dfce..fe107a9bdd \
100644
--- a/libs/resources/sql/create_versioned_resources.sql
+++ b/libs/resources/sql/create_versioned_resources.sql
@@ -3,7 +3,7 @@ CREATE TABLE IF NOT EXISTS versioned_resources (
, resource_id INTEGER
, storage_id INTEGER
, version INTEGER
-, location TEXT NOT NULL
+, filename TEXT NOT NULL
, md5sum TEXT NOT NULL
, timestamp INTEGER
, FOREIGN KEY(resource_id) REFERENCES resources(id)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic