From 8fe740473542fc26d19d2ec33f9a22df109753c4 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Fri, 23 Oct 2026 15:14:56 +0200 Subject: [PATCH] feat: add method for deleting user mounts by root id Signed-off-by: Robin Appelman --- lib/private/Files/Config/UserMountCache.php | 13 +++++++++++++ lib/public/Files/Config/IUserMountCache.php | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/lib/private/Files/Config/UserMountCache.php b/lib/private/Files/Config/UserMountCache.php index 1430ab469eff3..5b8ad021589f8 100644 --- a/lib/private/Files/Config/UserMountCache.php +++ b/lib/private/Files/Config/UserMountCache.php @@ -574,6 +574,19 @@ public function removeMount(string $mountPoint, ?IUser $user = null): void { } } + #[\Override] + public function removeMountsForRoot(int $rootId, ?IUser $user = null): void { + $query = $this->connection->getQueryBuilder(); + $query->delete('mounts') + ->where($query->expr()->eq('root_id', $query->createNamedParameter($rootId, IQueryBuilder::PARAM_INT))); + if ($user) { + $query->andWhere($query->expr()->eq('user_id', $query->createNamedParameter($user->getUID()))); + } + $query->executeStatement(); + + $this->clear(); + } + #[\Override] public function addMount( IUser $user, diff --git a/lib/public/Files/Config/IUserMountCache.php b/lib/public/Files/Config/IUserMountCache.php index 9ff3118664d07..5ff7ef21fa4d3 100644 --- a/lib/public/Files/Config/IUserMountCache.php +++ b/lib/public/Files/Config/IUserMountCache.php @@ -145,6 +145,13 @@ public function getMountsInPath(IUser $user, string $path): array; */ public function removeMount(string $mountPoint, ?IUser $user = null): void; + /** + * Remove all mounts for a given root id + * + * @since 36.0.0 + */ + public function removeMountsForRoot(int $rootId): void; + /** * Register a new mountpoint for a user *