using Microsoft.EntityFrameworkCore; using TakeoutSaaS.Domain.Tenants.Entities; using TakeoutSaaS.Domain.Tenants.Enums; using TakeoutSaaS.Domain.Tenants.Repositories; using TakeoutSaaS.Infrastructure.App.Persistence; namespace TakeoutSaaS.Infrastructure.App.Repositories; /// /// 租户配额使用仓储实现。 /// public sealed class EfTenantQuotaUsageRepository(TakeoutAppDbContext context) : ITenantQuotaUsageRepository { /// public Task FindAsync(long tenantId, TenantQuotaType quotaType, CancellationToken cancellationToken = default) { return context.TenantQuotaUsages .FirstOrDefaultAsync(x => x.TenantId == tenantId && x.QuotaType == quotaType, cancellationToken); } /// public Task> GetByTenantAsync(long tenantId, CancellationToken cancellationToken = default) { return context.TenantQuotaUsages .AsNoTracking() .Where(x => x.TenantId == tenantId) .OrderBy(x => x.QuotaType) .ToListAsync(cancellationToken) .ContinueWith(t => (IReadOnlyList)t.Result, cancellationToken); } /// public Task AddAsync(TenantQuotaUsage usage, CancellationToken cancellationToken = default) { return context.TenantQuotaUsages.AddAsync(usage, cancellationToken).AsTask(); } /// public Task UpdateAsync(TenantQuotaUsage usage, CancellationToken cancellationToken = default) { context.TenantQuotaUsages.Update(usage); return Task.CompletedTask; } /// public Task SaveChangesAsync(CancellationToken cancellationToken = default) { return context.SaveChangesAsync(cancellationToken); } }