/
AMachine
/
MMDB_Backend
Обзор
Документация
Войти
/
AMachine
/
MMDB_Backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MMDB.Data/Repositories/UsersRepository.cs
87 строк
3 KB
AssaultMachine
refactor sorting (по-человечески)
17 май 2025, 20:14
17 май 2025, 20:14
411b7f9
Код
Авторство
О чём код?
using AutoMapper; using Microsoft.EntityFrameworkCore; using MMDB.Core.Models; using MMDB.Core.Abstract.Repositories; using MMDB.Core.FilterParameters; using MMDB.Data.Entities.App; using MMDB.Data.Extensions; namespace MMDB.Data.Repositories; public class UsersRepository(AppDbContext context, IMapper mapper) : IUsersRepository { public int GetCount() => context.Users.Count(); public async ValueTask<(List<User>, int)> GetAllAsync(UserParameters parameters) { var filteredUsers = context.Users .AsNoTracking() .Filter(parameters); var result = await context.Users .Skip(parameters.Page * parameters.PageSize) .Take(parameters.PageSize) .Select(u => mapper.Map<User>(u)) .ToListAsync(); return (result, await filteredUsers.CountAsync()); } public async ValueTask<User?> GetByIdAsync(Guid id) { var userEntity = await context.Users.FirstOrDefaultAsync(u => u.Id == id); return userEntity is null ? null : mapper.Map<User>(userEntity); } public async ValueTask<User?> GetByNameAsync(string username) { var userEntity = await context.Users.FirstOrDefaultAsync(u => u.Username == username); return userEntity is null ? null : mapper.Map<User>(userEntity); } public async ValueTask<Guid> AddAsync(User user) { var userEntity = mapper.Map<UserEntity>(user); await context.Users.AddAsync(userEntity); await context.SaveChangesAsync(); return userEntity.Id; } public async ValueTask<Guid> UpdateAsync(User user) { if (!string.IsNullOrEmpty(user.Username)) await context.Users.Where(u => u.Id == user.Id) .ExecuteUpdateAsync(u => u.SetProperty(n => n.Username, user.Username)); if (!string.IsNullOrEmpty(user.PasswordHash)) await context.Users.Where(u => u.Id == user.Id) .ExecuteUpdateAsync(u => u.SetProperty(n => n.PasswordHash, user.PasswordHash)); if (user.IsAdmin.HasValue) await context.Users.Where(u => u.Id == user.Id) .ExecuteUpdateAsync(u => u.SetProperty(n => n.IsAdmin, user.IsAdmin)); if (user.IsActive.HasValue) await context.Users.Where(u => u.Id == user.Id) .ExecuteUpdateAsync(u => u.SetProperty(n => n.IsActive, user.IsActive)); if (!string.IsNullOrEmpty(user.Ckey)) await context.Users.Where(u => u.Id == user.Id) .ExecuteUpdateAsync(u => u.SetProperty(n => n.Ckey, user.Ckey)); await context.SaveChangesAsync(); return user.Id; } public async ValueTask<Guid> DeleteAsync(Guid id) { await context.Users.Where(u => u.Id == id).ExecuteDeleteAsync(); await context.SaveChangesAsync(); return id; } }