add a way to recalucale the size of a folder in the cache

This commit is contained in:
Robin Appelman 2012-10-27 17:02:05 +02:00
parent 2dc1b778b4
commit 56e9ce44c3
2 changed files with 36 additions and 0 deletions

View File

@ -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
*

View File

@ -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() {