using GymLogAI.Application.Interfaces; using GymLogAI.Core.Entities; using GymLogAI.Core.Enums; using Microsoft.EntityFrameworkCore; namespace GymLogAI.Persistence.Repositories; public sealed class TelegramMessageRepository(AppDbContext dbContext) : ITelegramMessageRepository { public async Task AddAsync(TelegramMessage message, CancellationToken cancellationToken) { dbContext.TelegramMessages.Add(message); await dbContext.SaveChangesAsync(cancellationToken); return message; } public async Task GetByIdAsync(Guid id, CancellationToken cancellationToken) { return await dbContext.TelegramMessages.SingleOrDefaultAsync(x => x.Id == id, cancellationToken); } public async Task> GetPendingAsync(int take, CancellationToken cancellationToken) { return await dbContext.TelegramMessages .Where(x => x.ParsingStatus == ParsingStatus.Pending) .OrderBy(x => x.ImportedAtUtc) .Take(take) .ToListAsync(cancellationToken); } public async Task UpdateAsync(TelegramMessage message, CancellationToken cancellationToken) { dbContext.TelegramMessages.Update(message); await dbContext.SaveChangesAsync(cancellationToken); return message; } }