add queue offsets to user

This commit is contained in:
Alex Bezdieniezhnykh
2025-04-16 01:29:58 +03:00
parent a5ccc46fbd
commit 5673eeade9
7 changed files with 69 additions and 2 deletions
+18
View File
@@ -15,6 +15,7 @@ public interface IUserService
Task<User?> GetById(Guid? id, CancellationToken cancellationToken = default);
Task<User?> GetByEmail(string email, CancellationToken cancellationToken = default);
Task UpdateHardware(string email, HardwareInfo hardwareInfo, CancellationToken cancellationToken = default);
Task UpdateQueueOffsets(string email, UserQueueOffsets queueOffsets, CancellationToken cancellationToken = default);
Task<IEnumerable<User>> GetUsers(string? searchEmail, RoleEnum? searchRole, CancellationToken cancellationToken);
Task<string> CheckHardwareHash(User user, GetResourceRequest request);
}
@@ -77,6 +78,23 @@ public class UserService(IDbFactory dbFactory, ICache cache) : IUserService
cache.Invalidate(User.GetCacheKey(email));
}
public async Task UpdateQueueOffsets(string email, UserQueueOffsets queueOffsets, CancellationToken cancellationToken = default)
{
await dbFactory.RunAdmin(async db =>
{
var userConfig = await db.Users.Where(x => x.Email == email).Select(x => x.UserConfig).FirstOrDefaultAsync(token: cancellationToken);
userConfig ??= new UserConfig();
userConfig.QueueConfig = queueOffsets;
await db.Users.UpdateAsync(x => x.Email == email,
u => new User
{
UserConfig = userConfig
}, token: cancellationToken);
});
cache.Invalidate(User.GetCacheKey(email));
}
public async Task<IEnumerable<User>> GetUsers(string? searchEmail, RoleEnum? searchRole, CancellationToken cancellationToken) =>
await dbFactory.Run(async db =>
await db.Users