private static async Task SeedRegionsAsync(EveEchoesPlanetaryProductionApiDbContext dbContext, ILogger logger)
        {
            await foreach (var line in CsvFileService.ReadCsvDataLineByLineAsync(GlobalConstants.FilePaths.RegionsCsvFilePath))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var lineArgs = line.Split(GlobalConstants.CsvDelimiter, StringSplitOptions.RemoveEmptyEntries);

                var success    = long.TryParse(lineArgs[0], out var regionId);
                var regionName = lineArgs[1];

                if (!success)
                {
                    logger.LogWarning(string.Format(DatabaseConstants.SeedingConstants.RegionErrorParseMessage, regionName));
                    logger.LogWarning(line);
                    continue;
                }

                var region = new Region()
                {
                    Id   = regionId,
                    Name = regionName,
                };

                await dbContext.AddAsync(region);
            }

            await dbContext.SaveChangesWithExplicitIdentityInsertAsync(nameof(EveEchoesPlanetaryProductionApiDbContext
                                                                              .Regions));
        }
Пример #2
0
        private static async Task SeedItemsAsync(EveEchoesPlanetaryProductionApiDbContext dbContext, ILogger logger)
        {
            await foreach (var line in CsvFileService.ReadCsvDataLineByLineAsync(GlobalConstants.FilePaths.ItemsCsvFilePath))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var itemArgs = line.Split(GlobalConstants.CsvDelimiter, StringSplitOptions.RemoveEmptyEntries);

                var item = await CreateItem(itemArgs, dbContext);

                if (item is null)
                {
                    var name = itemArgs[1];

                    logger.LogWarning(string.Format(DatabaseConstants.SeedingConstants.ItemErrorParseMessage, name));
                    logger.LogWarning(line);

                    continue;
                }

                if (await dbContext.Items.AnyAsync(i => i.Id.Equals(item.Id)))
                {
                    continue;
                }

                await dbContext.AddAsync(item);
            }

            await dbContext.SaveChangesWithExplicitIdentityInsertAsync(nameof(EveEchoesPlanetaryProductionApiDbContext.Items));
        }
Пример #3
0
        private static async Task SeedSolarSystemsAsync(EveEchoesPlanetaryProductionApiDbContext dbContext, ILogger logger)
        {
            await foreach (var line in CsvFileService.ReadCsvDataLineByLineAsync(GlobalConstants.FilePaths.SolarSystemsCsvFilePath))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var lineArgs = line.Split(GlobalConstants.CsvDelimiter, StringSplitOptions.RemoveEmptyEntries);

                var regionIdParseSuccess      = long.TryParse(lineArgs[0], out var regionId);
                var constellationParseSuccess = long.TryParse(lineArgs[1], out var constellationId);
                var solarSystemSuccess        = long.TryParse(lineArgs[2], out var solarSystemId);
                var solarSystemName           = lineArgs[3];

                var security = double.Parse(lineArgs[21]);

                if (!regionIdParseSuccess ||
                    !constellationParseSuccess ||
                    !solarSystemSuccess)
                {
                    logger.LogWarning(string.Format(
                                          DatabaseConstants.SeedingConstants.SolarSystemErrorParseMessage,
                                          solarSystemName));
                    logger.LogWarning(line);
                    continue;
                }

                var solarSystem = new SolarSystem()
                {
                    RegionId        = regionId,
                    ConstellationId = constellationId,
                    Id       = solarSystemId,
                    Name     = solarSystemName,
                    Security = security,
                };

                await dbContext.AddAsync(solarSystem);
            }

            await dbContext.SaveChangesWithExplicitIdentityInsertAsync(nameof(EveEchoesPlanetaryProductionApiDbContext
                                                                              .SolarSystems));
        }
Пример #4
0
        private static async Task SeedItemTypesAsync(EveEchoesPlanetaryProductionApiDbContext dbContext)
        {
            await foreach (var line in CsvFileService.ReadCsvDataLineByLineAsync(GlobalConstants.FilePaths.ItemTypesCsvFilePath))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var lineArgs     = line.Split(GlobalConstants.CsvDelimiter, StringSplitOptions.RemoveEmptyEntries);
                var itemTypeName = lineArgs[0];

                var itemType = new ItemType()
                {
                    Name = itemTypeName,
                };

                await dbContext.AddAsync(itemType);
            }

            await dbContext.SaveChangesAsync();
        }
Пример #5
0
        private static async Task UpdateItems(EveEchoesPlanetaryProductionApiDbContext dbContext, ILogger logger, bool update)
        {
            if (!update)
            {
                return;
            }

            await foreach (var line in CsvFileService.ReadCsvDataLineByLineAsync(GlobalConstants.FilePaths.ItemsCsvFilePath))
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var itemArgs = line.Split(GlobalConstants.CsvDelimiter, StringSplitOptions.RemoveEmptyEntries);

                var success = long.TryParse(itemArgs[0], out var itemId);

                if (!success)
                {
                    logger.LogError("Can't parse item");
                    logger.LogError(line);
                    continue;
                }

                if (await dbContext.Items.AnyAsync(i => i.Id.Equals(itemId)))
                {
                    continue;
                }

                var item = await CreateItem(itemArgs, dbContext);

                await dbContext.AddAsync(item);

                await dbContext.SaveChangesWithExplicitIdentityInsertAsync(nameof(EveEchoesPlanetaryProductionApiDbContext.Items));
            }
        }