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();
|
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
|
* get all file ids on the files on the storage
|
||||||
*
|
*
|
||||||
|
|
|
@ -99,6 +99,17 @@ class Cache extends \UnitTestCase {
|
||||||
$this->assertEqual($value, $cachedData[$name]);
|
$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() {
|
function testStatus() {
|
||||||
|
|
Loading…
Reference in New Issue