/
AMachine
/
MMDB_Backend
Обзор
Документация
Войти
/
AMachine
/
MMDB_Backend
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MMDB.Data/Repositories/PlayersRepository.cs
55 строк
2 KB
AssaultMachine
all in
19 май 2025, 20:38
19 май 2025, 20:38
9e4bda3
Код
Авторство
О чём код?
using System.Linq.Expressions; using AutoMapper; using Microsoft.EntityFrameworkCore; using MMDB.Core.Models; using MMDB.Core.Abstract.Repositories; using MMDB.Core.FilterParameters; using MMDB.Data.Extensions; using MMDB.Infrastructure; namespace MMDB.Data.Repositories; public class PlayersRepository(SS13DbContext context, IMapper mapper) : IPlayersRepository { public int GetCount() => context.Players.Count(); public async ValueTask<Player?> GetByCkeyAsync(string ckey) { var playerEntity = await context.Players .AsNoTracking() .FirstOrDefaultAsync(p => p.Ckey == ckey); return playerEntity is null ? null : mapper.Map<Player>(playerEntity); } public async ValueTask<uint?> GetIpByCkeyAsync(string ckey) { var playerEntity = await context.Players.FirstOrDefaultAsync(p => p.Ckey == ckey); return playerEntity?.Ip; } public async ValueTask<(List<Player>, int)> GetAllAsync(PlayerParameters parameters) { var playersEntities = context.Players .AsNoTracking() .Filter(parameters); var result = await playersEntities .Skip(parameters.Page * parameters.PageSize) .Take(parameters.PageSize) .Select(p => mapper.Map<Player>(p)) .ToListAsync(); return (result, await playersEntities.CountAsync()); } public async ValueTask<uint?> GetPlayTimeInMinutesAsync(string ckey) { var roleTimeEntity = await context.RoleTimes .Where(p => p.Ckey == ckey || p.Job == "Living") .FirstOrDefaultAsync(); return roleTimeEntity?.Minutes; } }