예제 #1
0
        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);
            }
        }
예제 #2
0
        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();
                }
            }
        }