[backend/core] Refactor GetOrCreateSystemUserAsync
This commit is contained in:
parent
dd3ea49367
commit
2e536bcd47
1 changed files with 9 additions and 12 deletions
|
@ -51,19 +51,16 @@ public class SystemUserService(ILogger<SystemUserService> logger, DatabaseContex
|
|||
.FirstOrDefault(p => p.Entity.UsernameLower == username.ToLowerInvariant())
|
||||
?.Entity;
|
||||
|
||||
user ??= await cache.FetchAsync($"systemUser:{username}", TimeSpan.FromHours(24), async () =>
|
||||
{
|
||||
user ??= await db.Users.FirstOrDefaultAsync(p => p.UsernameLower == username.ToLowerInvariant() &&
|
||||
p.IsLocalUser);
|
||||
|
||||
if (user != null) return user;
|
||||
|
||||
using (await KeyedLocker.LockAsync(username.ToLowerInvariant()))
|
||||
{
|
||||
logger.LogTrace("GetOrCreateSystemUser delegate method called for user {username}", username);
|
||||
return await db.Users.FirstOrDefaultAsync(p => p.UsernameLower == username.ToLowerInvariant() &&
|
||||
p.IsLocalUser) ??
|
||||
await CreateSystemUserAsync(username);
|
||||
return await CreateSystemUserAsync(username);
|
||||
}
|
||||
});
|
||||
|
||||
db.Attach(user);
|
||||
return user;
|
||||
}
|
||||
|
||||
private async Task<User> CreateSystemUserAsync(string username)
|
||||
|
|
Loading…
Add table
Reference in a new issue