public async Task <int> PullQuotaRemindingAsync( QuotaMetadata metadata) { using (var ctx = new AdminEntities(this.connectionString)) { var entity = await ctx.Quotas.SingleOrDefaultAsync(t => t.AccountName == metadata.AccountName && t.QuotaName == metadata.QuotaName); if (entity == null) { throw new ResourceNotFoundException($"No quota {metadata.AccountName}/{metadata.QuotaName}"); } return(metadata.IsCurrentSlot(entity.LastUpdatedTime) ? entity.Remaining : entity.Quota); } }
public async Task PushQuotaRemindingAsync( QuotaMetadata metadata, int reminding, DateTime synchronizeTime) { using (var ctx = new AdminEntities(this.connectionString)) { var entity = await ctx.Quotas.SingleOrDefaultAsync(t => t.AccountName == metadata.AccountName && t.QuotaName == metadata.QuotaName); if (entity == null) { throw new ResourceNotFoundException($"No quota {metadata.AccountName}/{metadata.QuotaName}"); } if (metadata.IsCurrentOrNewerSlot(entity.LastUpdatedTime)) { entity.Remaining = reminding; entity.LastUpdatedTime = synchronizeTime; await ctx.SaveChangesAsync(); } } }