Skip to content

Commit dea1b7a

Browse files
committed
perf(files): Optimize CacheEntry creatoin
Signed-off-by: Carl Schwan <[email protected]>
1 parent 408f9e8 commit dea1b7a

File tree

2 files changed

+30
-37
lines changed

2 files changed

+30
-37
lines changed

lib/private/Files/Cache/Cache.php

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -148,41 +148,38 @@ public function get($file) {
148148

149149
/**
150150
* Create a CacheEntry from database row
151-
*
152-
* @param array $data
153-
* @param IMimeTypeLoader $mimetypeLoader
154-
* @return CacheEntry
155151
*/
156-
public static function cacheEntryFromData($data, IMimeTypeLoader $mimetypeLoader) {
157-
//fix types
158-
$data['name'] = (string)$data['name'];
159-
$data['path'] = (string)$data['path'];
160-
$data['fileid'] = (int)$data['fileid'];
161-
$data['parent'] = (int)$data['parent'];
162-
$data['size'] = Util::numericToNumber($data['size']);
163-
$data['unencrypted_size'] = Util::numericToNumber($data['unencrypted_size'] ?? 0);
164-
$data['mtime'] = (int)$data['mtime'];
165-
$data['storage_mtime'] = (int)$data['storage_mtime'];
166-
$data['encryptedVersion'] = (int)$data['encrypted'];
167-
$data['encrypted'] = (bool)$data['encrypted'];
168-
$data['storage_id'] = $data['storage'];
169-
$data['storage'] = (int)$data['storage'];
170-
$data['mimetype'] = $mimetypeLoader->getMimetypeById($data['mimetype']);
171-
$data['mimepart'] = $mimetypeLoader->getMimetypeById($data['mimepart']);
172-
if ($data['storage_mtime'] == 0) {
173-
$data['storage_mtime'] = $data['mtime'];
174-
}
152+
public static function cacheEntryFromData(array $data, IMimeTypeLoader $mimetypeLoader): CacheEntry {
153+
$normalized = [
154+
'name' => (string)$data['name'],
155+
'etag' => (string)$data['etag'],
156+
'path' => (string)$data['path'],
157+
'fileid' => (int)$data['fileid'],
158+
'parent' => (int)$data['parent'],
159+
'size' => Util::numericToNumber($data['size']),
160+
'unencrypted_size' => Util::numericToNumber($data['unencrypted_size'] ?? 0),
161+
'mtime' => (int)$data['mtime'],
162+
'storage_mtime' => (int)($data['storage_mtime'] ?: $data['mtime']),
163+
'encryptedVersion' => (int)$data['encrypted'],
164+
'encrypted' => (bool)$data['encrypted'],
165+
'storage_id' => $data['storage'],
166+
'storage' => (int)$data['storage'],
167+
'mimetype' => $mimetypeLoader->getMimetypeById($data['mimetype']),
168+
'mimepart' => $mimetypeLoader->getMimetypeById($data['mimepart']),
169+
'permissions' => (int)$data['permissions'],
170+
];
171+
175172
if (isset($data['f_permissions'])) {
176-
$data['scan_permissions'] ??= $data['f_permissions'];
173+
$normalized['scan_permissions'] = $data['scan_permissions'] ?? $data['f_permissions'];
177174
}
178-
$data['permissions'] = (int)$data['permissions'];
175+
179176
if (isset($data['creation_time'])) {
180-
$data['creation_time'] = (int)$data['creation_time'];
177+
$normalized['creation_time'] = (int)$data['creation_time'];
178+
$normalized['upload_time'] = (int)$data['upload_time'];
179+
$normalized['metadata_etag'] = (string)$data['metadata_etag'];
181180
}
182-
if (isset($data['upload_time'])) {
183-
$data['upload_time'] = (int)$data['upload_time'];
184-
}
185-
return new CacheEntry($data);
181+
182+
return new CacheEntry($normalized);
186183
}
187184

188185
/**

lib/private/Files/Cache/CacheEntry.php

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,9 @@
1313
* meta data for a file or folder
1414
*/
1515
class CacheEntry implements ICacheEntry {
16-
/**
17-
* @var array
18-
*/
19-
private $data;
20-
21-
public function __construct(array $data) {
22-
$this->data = $data;
16+
public function __construct(
17+
private array $data,
18+
) {
2319
}
2420

2521
public function offsetSet($offset, $value): void {

0 commit comments

Comments
 (0)