|
|
|
|
@ -467,16 +467,8 @@ class UserMountCache implements IUserMountCache {
|
|
|
|
|
public function getUsedSpaceForUsers(array $users) {
|
|
|
|
|
$builder = $this->connection->getQueryBuilder();
|
|
|
|
|
|
|
|
|
|
$slash = $builder->createNamedParameter('/');
|
|
|
|
|
|
|
|
|
|
$mountPoint = $builder->func()->concat(
|
|
|
|
|
$builder->func()->concat($slash, 'user_id'),
|
|
|
|
|
$slash
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$userIds = array_map(function (IUser $user) {
|
|
|
|
|
return $user->getUID();
|
|
|
|
|
}, $users);
|
|
|
|
|
$mountPointHashes = array_map(static fn (IUser $user) => hash('xxh128', '/' . $user->getUID() . '/'), $users);
|
|
|
|
|
$userIds = array_map(static fn (IUser $user) => $user->getUID(), $users);
|
|
|
|
|
|
|
|
|
|
$query = $builder->select('m.user_id', 'f.size')
|
|
|
|
|
->from('mounts', 'm')
|
|
|
|
|
@ -485,7 +477,7 @@ class UserMountCache implements IUserMountCache {
|
|
|
|
|
$builder->expr()->eq('m.storage_id', 'f.storage'),
|
|
|
|
|
$builder->expr()->eq('f.path_hash', $builder->createNamedParameter(md5('files')))
|
|
|
|
|
))
|
|
|
|
|
->where($builder->expr()->eq('m.mount_point', $mountPoint))
|
|
|
|
|
->where($builder->expr()->in('m.mount_point_hash', $builder->createNamedParameter($mountPointHashes, IQueryBuilder::PARAM_STR_ARRAY)))
|
|
|
|
|
->andWhere($builder->expr()->in('m.user_id', $builder->createNamedParameter($userIds, IQueryBuilder::PARAM_STR_ARRAY)));
|
|
|
|
|
|
|
|
|
|
$result = $query->executeQuery();
|
|
|
|
|
|