aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/FilesMetadata
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2023-12-05 01:37:22 -0100
committerMaxence Lange <maxence@artificial-owl.com>2023-12-05 01:37:41 -0100
commit43469337b4df47b10666969293130a05f45eaebb (patch)
treeaa0607260830a62b642436f9dc958981a92eb142 /lib/private/FilesMetadata
parent0f459ff6babf7dfa91b0f747c1bed5b1794557da (diff)
downloadnextcloud-server-43469337b4df47b10666969293130a05f45eaebb.tar.gz
nextcloud-server-43469337b4df47b10666969293130a05f45eaebb.zip
+files_metadata_installed
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Diffstat (limited to 'lib/private/FilesMetadata')
-rw-r--r--lib/private/FilesMetadata/FilesMetadataManager.php28
1 files changed, 26 insertions, 2 deletions
diff --git a/lib/private/FilesMetadata/FilesMetadataManager.php b/lib/private/FilesMetadata/FilesMetadataManager.php
index c651fead0ce..013c85af604 100644
--- a/lib/private/FilesMetadata/FilesMetadataManager.php
+++ b/lib/private/FilesMetadata/FilesMetadataManager.php
@@ -52,6 +52,7 @@ use OCP\FilesMetadata\IMetadataQuery;
use OCP\FilesMetadata\Model\IFilesMetadata;
use OCP\FilesMetadata\Model\IMetadataValueWrapper;
use OCP\IConfig;
+use OCP\IDBConnection;
use Psr\Log\LoggerInterface;
/**
@@ -60,6 +61,7 @@ use Psr\Log\LoggerInterface;
*/
class FilesMetadataManager implements IFilesMetadataManager {
public const CONFIG_KEY = 'files_metadata';
+ public const MIGRATION_DONE = 'files_metadata_installed';
private const JSON_MAXSIZE = 100000;
private ?IFilesMetadata $all = null;
@@ -241,10 +243,10 @@ class FilesMetadataManager implements IFilesMetadataManager {
string $fileTableAlias,
string $fileIdField
): ?IMetadataQuery {
- // we don't want to join metadata table if never filled
- if ($this->config->getAppValue('core', self::CONFIG_KEY, '') === '') {
+ if (!$this->metadataInitiated()) {
return null;
}
+
return new MetadataQuery($qb, $this->getKnownMetadata(), $fileTableAlias, $fileIdField);
}
@@ -320,4 +322,26 @@ class FilesMetadataManager implements IFilesMetadataManager {
$eventDispatcher->addServiceListener(NodeWrittenEvent::class, MetadataUpdate::class);
$eventDispatcher->addServiceListener(CacheEntryRemovedEvent::class, MetadataDelete::class);
}
+
+ /**
+ * Will confirm that tables were created and store an app value to cache the result.
+ * Can be removed in 29 as this is to avoid strange situation when Nextcloud files were
+ * replaced but the upgrade was not triggered yet.
+ *
+ * @return bool
+ */
+ private function metadataInitiated(): bool {
+ if ($this->config->getAppValue('core', self::MIGRATION_DONE, '0') === '1') {
+ return true;
+ }
+
+ $dbConnection = \OCP\Server::get(IDBConnection::class);
+ if ($dbConnection->tableExists(MetadataRequestService::TABLE_METADATA)) {
+ $this->config->setAppValue('core', self::MIGRATION_DONE, '1');
+
+ return true;
+ }
+
+ return false;
+ }
}