diff --git a/lib/Versions/GroupVersionsMapper.php b/lib/Versions/GroupVersionsMapper.php index 101f67754..5ebbce095 100644 --- a/lib/Versions/GroupVersionsMapper.php +++ b/lib/Versions/GroupVersionsMapper.php @@ -45,6 +45,9 @@ public function findCurrentVersionForFileId(int $fileId): GroupVersionEntity { return $this->findEntity($qb); } + /** + * @throws \OCP\AppFramework\Db\DoesNotExistException + */ public function findVersionForFileId(int $fileId, int $timestamp): GroupVersionEntity { $qb = $this->db->getQueryBuilder(); diff --git a/lib/Versions/VersionsBackend.php b/lib/Versions/VersionsBackend.php index 057990678..50fe56053 100644 --- a/lib/Versions/VersionsBackend.php +++ b/lib/Versions/VersionsBackend.php @@ -20,6 +20,7 @@ use OCA\GroupFolders\Mount\GroupFolderStorage; use OCA\GroupFolders\Mount\GroupMountPoint; use OCA\GroupFolders\Mount\MountProvider; +use OCP\AppFramework\Db\DoesNotExistException; use OCP\Constants; use OCP\Files\File; use OCP\Files\FileInfo; @@ -332,13 +333,19 @@ public function deleteVersion(IVersion $version): void { } public function createVersionEntity(File $file): void { - $versionEntity = new GroupVersionEntity(); - $versionEntity->setFileId($file->getId()); - $versionEntity->setTimestamp($file->getMTime()); - $versionEntity->setSize($file->getSize()); - $versionEntity->setMimetype($this->mimeTypeLoader->getId($file->getMimetype())); - $versionEntity->setDecodedMetadata([]); - $this->groupVersionsMapper->insert($versionEntity); + $fileId = $file->getId(); + $timestamp = $file->getMTime(); + try { + $this->groupVersionsMapper->findVersionForFileId($fileId, $timestamp); + } catch (DoesNotExistException) { + $versionEntity = new GroupVersionEntity(); + $versionEntity->setFileId($fileId); + $versionEntity->setTimestamp($timestamp); + $versionEntity->setSize($file->getSize()); + $versionEntity->setMimetype($this->mimeTypeLoader->getId($file->getMimetype())); + $versionEntity->setDecodedMetadata([]); + $this->groupVersionsMapper->insert($versionEntity); + } } public function updateVersionEntity(File $sourceFile, int $revision, array $properties): void {