コード例 #1
0
 public Entities.CheckBatch ToEntity(Runner.CheckBatch checkBatch)
 {
     return(new Entities.CheckBatch
     {
         Time = TimeUtilities.DateTimeOffsetToLong(checkBatch.Time),
         Duration = TimeUtilities.TimeSpanToLong(checkBatch.Duration)
     });
 }
コード例 #2
0
        public async Task <CheckBatch> PersistBatchAsync(Runner.CheckBatch runnerBatch, CancellationToken token)
        {
            var checkNames = runnerBatch
                             .CheckResults
                             .Select(x => x.Check.Name)
                             .Distinct()
                             .ToList();

            // Get relevant check names
            var checkNameToCheck = await _context
                                   .Checks
                                   .Where(x => checkNames.Contains(x.Name))
                                   .ToDictionaryAsync(x => x.Name, x => x, token);

            // Initialize new checks
            foreach (var checkName in checkNames)
            {
                if (!checkNameToCheck.ContainsKey(checkName))
                {
                    checkNameToCheck[checkName] = new Entities.Check {
                        Name = checkName
                    };
                }
            }

            // Initialize the batch entity
            var batch = _runnerMapper.ToEntity(runnerBatch);

            batch.CheckResults = runnerBatch
                                 .CheckResults
                                 .Select(x => ToEntity(x, checkNameToCheck))
                                 .ToList();

            // Persist the batch
            _context.CheckBatches.Add(batch);

            await _context.SaveChangesAsync(token);

            return(_entityMapper.ToBusiness(batch));
        }