add a way to recalucale the size of a folder in the cache
This commit is contained in:
parent
2dc1b778b4
commit
56e9ce44c3
|
@ -308,6 +308,31 @@ class Cache {
|
|||
return $result->fetchAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* get the size of a folder and set it in the cache
|
||||
*
|
||||
* @param string $path
|
||||
* @return int
|
||||
*/
|
||||
public function calculateFolderSize($path) {
|
||||
$id = $this->getId($path);
|
||||
$query = \OC_DB::prepare('SELECT `size` FROM `*PREFIX*filecache` WHERE `parent` = ? AND `storage` = ?');
|
||||
$result = $query->execute(array($id, $this->storageId));
|
||||
$totalSize = 0;
|
||||
while ($row = $result->fetchRow()) {
|
||||
$size = (int)$row['size'];
|
||||
if ($size === -1) {
|
||||
$totalSize = -1;
|
||||
break;
|
||||
} else {
|
||||
$totalSize += $size;
|
||||
}
|
||||
}
|
||||
|
||||
$this->update($id, array('size' => $totalSize));
|
||||
return $totalSize;
|
||||
}
|
||||
|
||||
/**
|
||||
* get all file ids on the files on the storage
|
||||
*
|
||||
|
|
|
@ -99,6 +99,17 @@ class Cache extends \UnitTestCase {
|
|||
$this->assertEqual($value, $cachedData[$name]);
|
||||
}
|
||||
}
|
||||
|
||||
$file4 = 'folder/unkownSize';
|
||||
$fileData['unkownSize'] = array('size' => -1, 'mtime' => 25, 'mimetype' => 'foo/file');
|
||||
$this->cache->put($file4, $fileData['unkownSize']);
|
||||
|
||||
$this->assertEquals(-1, $this->cache->calculateFolderSize($file1));
|
||||
|
||||
$fileData['unkownSize'] = array('size' => 5, 'mtime' => 25, 'mimetype' => 'foo/file');
|
||||
$this->cache->put($file4, $fileData['unkownSize']);
|
||||
|
||||
$this->assertEquals(1025, $this->cache->calculateFolderSize($file1));
|
||||
}
|
||||
|
||||
function testStatus() {
|
||||
|
|
Loading…
Reference in New Issue