Skip to content

Commit

Permalink
feat: add public interface for CacheAccess
Browse files Browse the repository at this point in the history
Signed-off-by: Robin Appelman <[email protected]>
  • Loading branch information
icewind1991 committed Mar 21, 2024
1 parent 637d8ec commit f6dc6a2
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 1 deletion.
1 change: 1 addition & 0 deletions lib/composer/composer/autoload_classmap.php
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,7 @@
'OCP\\Files\\Cache\\CacheInsertEvent' => $baseDir . '/lib/public/Files/Cache/CacheInsertEvent.php',
'OCP\\Files\\Cache\\CacheUpdateEvent' => $baseDir . '/lib/public/Files/Cache/CacheUpdateEvent.php',
'OCP\\Files\\Cache\\ICache' => $baseDir . '/lib/public/Files/Cache/ICache.php',
'OCP\\Files\\Cache\\ICacheAccess' => $baseDir . '/lib/public/Files/Cache/ICacheAccess.php',
'OCP\\Files\\Cache\\ICacheEntry' => $baseDir . '/lib/public/Files/Cache/ICacheEntry.php',
'OCP\\Files\\Cache\\ICacheEvent' => $baseDir . '/lib/public/Files/Cache/ICacheEvent.php',
'OCP\\Files\\Cache\\IPropagator' => $baseDir . '/lib/public/Files/Cache/IPropagator.php',
Expand Down
1 change: 1 addition & 0 deletions lib/composer/composer/autoload_static.php
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OCP\\Files\\Cache\\CacheInsertEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheInsertEvent.php',
'OCP\\Files\\Cache\\CacheUpdateEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/CacheUpdateEvent.php',
'OCP\\Files\\Cache\\ICache' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICache.php',
'OCP\\Files\\Cache\\ICacheAccess' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICacheAccess.php',
'OCP\\Files\\Cache\\ICacheEntry' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICacheEntry.php',
'OCP\\Files\\Cache\\ICacheEvent' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/ICacheEvent.php',
'OCP\\Files\\Cache\\IPropagator' => __DIR__ . '/../../..' . '/lib/public/Files/Cache/IPropagator.php',
Expand Down
3 changes: 2 additions & 1 deletion lib/private/Files/Cache/CacheAccess.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@
use OC\FilesMetadata\FilesMetadataManager;
use OC\SystemConfig;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Files\Cache\ICacheAccess;
use OCP\Files\IMimeTypeLoader;
use OCP\IDBConnection;
use Psr\Log\LoggerInterface;

/**
* Lower level access to the file cache
*/
class CacheAccess {
class CacheAccess implements ICacheAccess {
public function __construct(
private IDBConnection $connection,
private SystemConfig $systemConfig,
Expand Down
76 changes: 76 additions & 0 deletions lib/public/Files/Cache/ICacheAccess.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
<?php

namespace OCP\Files\Cache;

/**
* Low level access to the file cache.
*
* This is intended for use cases where data from the filecache needs to be loaded by the full filesystem apis are
* insufficient or to inefficient.
*
* @since 29.0.0
*/
interface ICacheAccess {
/**
* Get a filecache data by file id from a specific storage.
*
* This is preferred over `getByFileId` when the storage id is known as it
* can be more efficient in some setups.
*
* @param int $fileId
* @param int $storageId
* @return ICacheEntry|null
*
* @since 29.0.0
*/
public function getByFileIdInStorage(int $fileId, int $storageId): ?ICacheEntry;

/**
* Get a filecache data by path and storage id.
*
* @param string $path
* @param int $storageId
* @return ICacheEntry|null
*
* @since 29.0.0
*/
public function getByPathInStorage(string $path, int $storageId): ?ICacheEntry ;

/**
* Get a filecache data by file id.
*
* If the storage id is known than `getByFileIdInStorage` is preferred as it can be more efficient in some setups.
*
* @param int $fileId
* @return ICacheEntry|null
*
* @since 29.0.0
*/
public function getByFileId(int $fileId): ?ICacheEntry;

/**
* Get filecache data by file ids.
*
* If the storage id is known than `getByFileIdsInStorage` is preferred as it can be more efficient in some setups.
*
* @param int[] $fileIds
* @return array<int, ICacheEntry>
*
* @since 29.0.0
*/
public function getByFileIds(array $fileIds): array;

/**
* Get filecache data by file ids from a specific storage.
*
* This is prefered over `getByFileIds` when the storage id is known as it
* can be more efficient in some setups.
*
* @param int[] $fileIds
* @param int $storageId
* @return array<int, ICacheEntry>
*
* @since 29.0.0
*/
public function getByFileIdsInStorage(array $fileIds, int $storageId): array;
}

0 comments on commit f6dc6a2

Please sign in to comment.