/
AMachine
/
MMDB_Backend
Обзор
Документация
Войти
/
AMachine
/
MMDB_Backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MMDB.Data/Repositories/BansRepository.cs
59 строк
2 KB
AssaultMachine
little optimization
17 май 2025, 20:35
17 май 2025, 20:35
9895b15
Код
Авторство
О чём код?
using AutoMapper; using Microsoft.EntityFrameworkCore; using MMDB.Core.FilterParameters; using MMDB.Data.Entities.SS13; using MMDB.Data.Extensions; using MMDB.Core.Models; using MMDB.Core.Abstract.Repositories; namespace MMDB.Data.Repositories; public class BansRepository(SS13DbContext context, IMapper mapper) : IBansRepository { public int GetCount() => context.Bans.Count(); public async ValueTask<(List<Ban> Bans, int Count)> GetAllAsync(BanParameters parameters) { var filteredBans = context.Bans .AsNoTracking() .Filter(parameters); var result = await filteredBans .Skip(parameters.Page * parameters.PageSize) .Take(parameters.PageSize) .Select(b => mapper.Map<Ban>(b)) .ToListAsync(); return (result, await filteredBans.CountAsync()); } public async ValueTask<(List<Ban> Bans, int Count)> GetByCkeyAsync(string ckey) { var bansEntities = context.Bans .Where(b => b.Ckey == ckey); var bans = await bansEntities .Select(b => mapper.Map<Ban>(b)) .ToListAsync(); return (bans, bans.Count); } public async Task AddAsync(Ban ban) { var bansEntity = mapper.Map<BanEntity>(ban); await context.AddAsync(bansEntity); await context.SaveChangesAsync(); } public async ValueTask<bool> UnbanAsync(int id, string aCkey) { if ((await context.Bans.FirstOrDefaultAsync(b => b.Id == id)) == null) return false; await context.Bans .Where(b => b.Id == id) .ExecuteUpdateAsync(be => be.SetProperty(b => b.UnbannedDatetime, DateTime.UtcNow).SetProperty(b => b.UnbannedCkey, aCkey)); await context.SaveChangesAsync(); return true; } }