66 lines
1.5 KiB
PHP
66 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH
|
|
* SPDX-FileContributor: Carl Schwan
|
|
* SPDX-License-Identifier: AGPL-3.0-or-later
|
|
*/
|
|
|
|
namespace OC\Preview\Storage;
|
|
|
|
use OC\Files\ObjectStore\PrimaryObjectStoreConfig;
|
|
use OC\Files\SimpleFS\SimpleFile;
|
|
use OC\Preview\Db\Preview;
|
|
use OCP\Server;
|
|
use Override;
|
|
|
|
class StorageFactory implements IPreviewStorage {
|
|
private ?IPreviewStorage $backend = null;
|
|
|
|
public function __construct(
|
|
private readonly PrimaryObjectStoreConfig $objectStoreConfig,
|
|
) {
|
|
}
|
|
|
|
#[Override]
|
|
public function writePreview(Preview $preview, mixed $stream): int {
|
|
return $this->getBackend()->writePreview($preview, $stream);
|
|
}
|
|
|
|
#[Override]
|
|
public function readPreview(Preview $preview): mixed {
|
|
return $this->getBackend()->readPreview($preview);
|
|
}
|
|
|
|
#[Override]
|
|
public function deletePreview(Preview $preview): void {
|
|
$this->getBackend()->deletePreview($preview);
|
|
}
|
|
|
|
private function getBackend(): IPreviewStorage {
|
|
if ($this->backend) {
|
|
return $this->backend;
|
|
}
|
|
|
|
if ($this->objectStoreConfig->hasObjectStore()) {
|
|
$this->backend = Server::get(ObjectStorePreviewStorage::class);
|
|
} else {
|
|
$this->backend = Server::get(LocalPreviewStorage::class);
|
|
}
|
|
|
|
return $this->backend;
|
|
}
|
|
|
|
#[Override]
|
|
public function migratePreview(Preview $preview, SimpleFile $file): void {
|
|
$this->getBackend()->migratePreview($preview, $file);
|
|
}
|
|
|
|
#[Override]
|
|
public function scan(): int {
|
|
return $this->getBackend()->scan();
|
|
}
|
|
}
|