/// <inheritdoc />
        public async Task SaveInProgressImageScan(ImageScanResultWithCVEs imageScanResult)
        {
            Logger.Information("Saving In-Progress Image Scan {ImageScanId} for {ImageTag}", imageScanResult.Id, imageScanResult.ImageTag);

            this.db.Set <ImageScanResultEntity>().Add(imageScanResult.ToEntity());
            await this.db.SaveChangesAsync();
        }
        /// <inheritdoc />
        public async Task SaveImageScanResult(ImageScanResultWithCVEs imageScanResult)
        {
            Logger.Information(
                "Saving Image Scan {ImageScanId} for {ImageTag} with {FoundCVE} found CVEs",
                imageScanResult.Id,
                imageScanResult.ImageTag,
                imageScanResult.FoundCVEs?.Count ?? 0);

            var existingScanResult = await this.db.Set <ImageScanResultEntity>().FirstOrDefaultAsync(i => i.ExternalId == imageScanResult.Id);

            if (existingScanResult == null)
            {
                this.db.Set <ImageScanResultEntity>().Add(imageScanResult.ToEntity());
            }
            else
            {
                var newEntity = imageScanResult.ToEntity();
                existingScanResult.Date        = newEntity.Date;
                existingScanResult.FoundCVEs   = newEntity.FoundCVEs;
                existingScanResult.Status      = newEntity.Status;
                existingScanResult.Description = newEntity.Description;

                this.db.Set <ImageScanResultEntity>().Update(existingScanResult);
            }

            // update in-progress check-results
            var checkResults = await this.db.Set <CheckResultEntity>()
                               .Where(i => i.Value == CheckValue.InProgress && i.ComponentId.EndsWith(imageScanResult.ImageTag))
                               .ToArrayAsync();

            foreach (var result in checkResults)
            {
                result.Value   = imageScanResult.GetCheckResultValue().ToEntity();
                result.Message = imageScanResult.GetCheckResultMessage();
                this.db.Update(result);
            }

            await this.db.SaveChangesAsync();
        }