From 75facfa403933583d6a98c23ea63a968778cce5b Mon Sep 17 00:00:00 2001 From: Carl Schwan Date: Mon, 27 Jul 2026 14:55:12 +0200 Subject: [PATCH] perf: Cache created user after creation Signed-off-by: Carl Schwan --- lib/Controller/OcsApiController.php | 3 +++ lib/Db/User.php | 1 + lib/Db/UserMapper.php | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/Controller/OcsApiController.php b/lib/Controller/OcsApiController.php index 2ab4f1ac5..3f61185d4 100644 --- a/lib/Controller/OcsApiController.php +++ b/lib/Controller/OcsApiController.php @@ -49,6 +49,9 @@ public function createUser( ): DataResponse { $backendUser = $this->userMapper->getOrCreate($providerId, $userId); $user = $this->userManager->get($backendUser->getUserId()); + if ($user === null) { + throw new \RuntimeException('Unable to get user that was just created with userId=' . $backendUser->getUserId()); + } if ($displayName) { if ($displayName !== $backendUser->getDisplayName()) { diff --git a/lib/Db/User.php b/lib/Db/User.php index 03126e00a..f7b6f6c9a 100644 --- a/lib/Db/User.php +++ b/lib/Db/User.php @@ -27,5 +27,6 @@ class User extends Entity { public function __construct() { $this->addType('userId', Types::STRING); + $this->addType('displayName', Types::STRING); } } diff --git a/lib/Db/UserMapper.php b/lib/Db/UserMapper.php index 2f91604c2..b2083c33f 100644 --- a/lib/Db/UserMapper.php +++ b/lib/Db/UserMapper.php @@ -167,7 +167,10 @@ public function getOrCreate(int $providerId, string $sub, bool $id4me = false): $user = new User(); $user->setUserId($userId); - return $this->insert($user); + $user->setDisplayName(''); + $user = $this->insert($user); + $this->userCache->set($userId, $user); + return $user; } /**