public async Task CreateParsingStatusesForNewFile(Guid fileId, string md5)
        {
            ArgumentValidator.Requires(() => fileId != default, nameof(fileId));
            ArgumentValidator.NotNullOrWhiteSpace(() => md5);

            var allMetadataSources = typeof(MetadataSource).GetEnumValues().Cast <MetadataSource>();

            foreach (var metadataSource in allMetadataSources)
            {
                var check = await _parsingStatusRepository.Get(fileId, metadataSource);

                if (check != null)
                {
                    _logger.LogWarning(
                        "Can't create a parsing status with duplicate key {FileId}, {Source}",
                        fileId,
                        metadataSource);
                    continue;
                }

                var parsingStatus = ParsingStatus.Create(fileId, md5, metadataSource);

                await _parsingStatusRepository.Add(parsingStatus);
            }
        }
예제 #2
0
        public static ParsingStatus Create(Guid fileId, string md5, MetadataSource source)
        {
            ArgumentValidator.Requires(() => fileId != default, nameof(fileId));
            ArgumentValidator.NotNullOrWhiteSpace(() => md5);
            ArgumentValidator.IsEnumDefined(() => source);

            var created = new ParsingStatus(fileId, md5, source, DateTimeOffset.Now, Status.SearchRequested);

            created.Add(new ParsingStatusCreated(created));
            return(created);
        }