diff options
Diffstat (limited to 'lib/private/FilesMetadata')
3 files changed, 44 insertions, 11 deletions
diff --git a/lib/private/FilesMetadata/Model/FilesMetadata.php b/lib/private/FilesMetadata/Model/FilesMetadata.php index 84cb177bc37..3de72357431 100644 --- a/lib/private/FilesMetadata/Model/FilesMetadata.php +++ b/lib/private/FilesMetadata/Model/FilesMetadata.php @@ -156,6 +156,23 @@ class FilesMetadata implements IFilesMetadata { $this->metadata[$key]->setEditPermission($permission); } + + public function getEtag(string $key): string { + if (!array_key_exists($key, $this->metadata)) { + throw new FilesMetadataNotFoundException(); + } + + return $this->metadata[$key]->getEtag(); + } + + public function setEtag(string $key, string $etag): void { + if (!array_key_exists($key, $this->metadata)) { + throw new FilesMetadataNotFoundException(); + } + + $this->metadata[$key]->setEtag($etag); + } + /** * @param string $key metadata key * diff --git a/lib/private/FilesMetadata/Model/MetadataValueWrapper.php b/lib/private/FilesMetadata/Model/MetadataValueWrapper.php index 90f1554180d..70dec89650a 100644 --- a/lib/private/FilesMetadata/Model/MetadataValueWrapper.php +++ b/lib/private/FilesMetadata/Model/MetadataValueWrapper.php @@ -38,6 +38,7 @@ class MetadataValueWrapper implements IMetadataValueWrapper { private string $type; /** @var string|int|float|bool|array|string[]|int[] */ private mixed $value = null; + private string $etag = ''; private bool $indexed = false; private int $editPermission = self::EDIT_FORBIDDEN; @@ -351,6 +352,27 @@ class MetadataValueWrapper implements IMetadataValueWrapper { } /** + * @inheritDoc + * @return string stored etag + * @since 29.0.0 + */ + public function getEtag(): string { + return $this->etag; + } + + /** + * @param string $etag etag value + * + * @inheritDoc + * @return self + * @since 29.0.0 + */ + public function setEtag(string $etag): self { + $this->etag = $etag; + return $this; + } + + /** * @param bool $indexed TRUE to set the stored value as an indexed value * * @inheritDoc @@ -405,6 +427,7 @@ class MetadataValueWrapper implements IMetadataValueWrapper { public function import(array $data): self { $this->value = $data['value'] ?? null; $this->type = $data['type'] ?? ''; + $this->setEtag($data['etag'] ?? ''); $this->setIndexed($data['indexed'] ?? false); $this->setEditPermission($data['editPermission'] ?? self::EDIT_FORBIDDEN); return $this; @@ -414,6 +437,7 @@ class MetadataValueWrapper implements IMetadataValueWrapper { return [ 'value' => ($emptyValues) ? null : $this->value, 'type' => $this->getType(), + 'etag' => $this->getEtag(), 'indexed' => $this->isIndexed(), 'editPermission' => $this->getEditPermission() ]; diff --git a/lib/private/FilesMetadata/Service/MetadataRequestService.php b/lib/private/FilesMetadata/Service/MetadataRequestService.php index cdce624d75c..b6d1b277a00 100644 --- a/lib/private/FilesMetadata/Service/MetadataRequestService.php +++ b/lib/private/FilesMetadata/Service/MetadataRequestService.php @@ -74,16 +74,12 @@ class MetadataRequestService { try { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('json', 'sync_token')->from(self::TABLE_METADATA); - $qb->where( - $qb->expr()->eq('file_id', $qb->createNamedParameter($fileId, IQueryBuilder::PARAM_INT)) - ); + $qb->where($qb->expr()->eq('file_id', $qb->createNamedParameter($fileId, IQueryBuilder::PARAM_INT))); $result = $qb->executeQuery(); $data = $result->fetch(); $result->closeCursor(); } catch (Exception $e) { - $this->logger->warning( - 'exception while getMetadataFromDatabase()', ['exception' => $e, 'fileId' => $fileId] - ); + $this->logger->warning('exception while getMetadataFromDatabase()', ['exception' => $e, 'fileId' => $fileId]); throw new FilesMetadataNotFoundException(); } @@ -100,8 +96,6 @@ class MetadataRequestService { /** * returns metadata for multiple file ids * - * If - * * @param array $fileIds file ids * * @return array File ID is the array key, files without metadata are not returned in the array @@ -110,9 +104,7 @@ class MetadataRequestService { public function getMetadataFromFileIds(array $fileIds): array { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('file_id', 'json', 'sync_token')->from(self::TABLE_METADATA); - $qb->where( - $qb->expr()->in('file_id', $qb->createNamedParameter($fileIds, IQueryBuilder::PARAM_INT_ARRAY)) - ); + $qb->where($qb->expr()->in('file_id', $qb->createNamedParameter($fileIds, IQueryBuilder::PARAM_INT_ARRAY))); $list = []; $result = $qb->executeQuery(); |