using System.Linq; using Microsoft.EntityFrameworkCore; using TakeoutSaaS.Domain.Deliveries.Entities; using TakeoutSaaS.Domain.Deliveries.Repositories; using TakeoutSaaS.Infrastructure.App.Persistence; namespace TakeoutSaaS.Infrastructure.App.Repositories; /// /// 配送聚合的 EF Core 仓储实现。 /// public sealed class EfDeliveryRepository : IDeliveryRepository { private readonly TakeoutAppDbContext _context; /// /// 初始化仓储。 /// public EfDeliveryRepository(TakeoutAppDbContext context) { _context = context; } /// public Task FindByIdAsync(long deliveryOrderId, long tenantId, CancellationToken cancellationToken = default) { return _context.DeliveryOrders .AsNoTracking() .Where(x => x.TenantId == tenantId && x.Id == deliveryOrderId) .FirstOrDefaultAsync(cancellationToken); } /// public Task FindByOrderIdAsync(long orderId, long tenantId, CancellationToken cancellationToken = default) { return _context.DeliveryOrders .AsNoTracking() .Where(x => x.TenantId == tenantId && x.OrderId == orderId) .FirstOrDefaultAsync(cancellationToken); } /// public async Task> GetEventsAsync(long deliveryOrderId, long tenantId, CancellationToken cancellationToken = default) { var events = await _context.DeliveryEvents .AsNoTracking() .Where(x => x.TenantId == tenantId && x.DeliveryOrderId == deliveryOrderId) .OrderBy(x => x.CreatedAt) .ToListAsync(cancellationToken); return events; } /// public Task AddDeliveryOrderAsync(DeliveryOrder deliveryOrder, CancellationToken cancellationToken = default) { return _context.DeliveryOrders.AddAsync(deliveryOrder, cancellationToken).AsTask(); } /// public Task AddEventAsync(DeliveryEvent deliveryEvent, CancellationToken cancellationToken = default) { return _context.DeliveryEvents.AddAsync(deliveryEvent, cancellationToken).AsTask(); } /// public Task SaveChangesAsync(CancellationToken cancellationToken = default) { return _context.SaveChangesAsync(cancellationToken); } }