public void UpdateReadModel(SpreadsheetImportReport importReport) { _reporter.StartReadModelUpdate(); _reporter.StartReadModelUpdate("entityTypes"); _entityTypeRepository.Update(_entityTypeMapper.MapFromDatabase(importReport)); _reporter.StopReadModelUpdate("entityTypes"); _reporter.StartReadModelUpdate("itemStatBoosts"); _itemStatBoostPokemonRepository.Update(_itemStatBoostPokemonMapper.MapFromDatabase(importReport)); _reporter.StopReadModelUpdate("itemStatBoosts"); _reporter.StartReadModelUpdate("simpleLearnableMoves"); _simpleLearnableMoveRepository.Update(_simpleLearnableMoveMapper.MapFromDatabase(importReport)); _reporter.StopReadModelUpdate("simpleLearnableMoves"); _reporter.StartReadModelUpdate("moves"); _moveRepository.Update(_moveMapper.MapFromDatabase(importReport)); _reporter.StopReadModelUpdate("moves"); _reporter.StartReadModelUpdate("natures"); _natureRepository.Update(_natureMapper.MapFromDatabase(importReport)); _reporter.StopReadModelUpdate("natures"); _reporter.StartReadModelUpdate("pokemonVarieties"); _pokemonVarietyRepository.Update(_pokemonVarietyMapper.MapFromDatabase(importReport)); _reporter.StopReadModelUpdate("pokemonVarieties"); _reporter.StartReadModelUpdate("items"); _itemRepository.Update(_itemMapper.MapFromDatabase(importReport)); _reporter.StopReadModelUpdate("items"); _reporter.StopReadModelUpdate(); }
public IDictionary <EntityTypeReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport importReport) { var pokemonMappings = _dbContext.PokemonVarieties .Where(p => p.DoInclude) .AsNoTracking() .Select(p => new EntityTypeReadModel { ResourceName = p.ResourceName, EntityType = EntityType.PokemonVariety }); var locationMappings = _dbContext.LocationGroups .AsNoTracking() .Select(l => new EntityTypeReadModel { ResourceName = l.ResourceName, EntityType = EntityType.Location }); var itemMappings = _dbContext.Items .Where(i => i.DoInclude) .AsNoTracking() .Select(i => new EntityTypeReadModel { ResourceName = i.ResourceName, EntityType = EntityType.Item }); var entityTypeMappings = pokemonMappings.ToList(); entityTypeMappings.AddRange(locationMappings); entityTypeMappings.AddRange(itemMappings); return(entityTypeMappings.ToDictionary(x => x, _ => DbAction.Create)); }
public IDictionary <PokemonVarietyReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report) { var varietyIds = _dbContext.PokemonVarieties .Where(v => v.DoInclude) .Include(v => v.DefaultForm) .AsNoTracking() .OrderBy(v => v.DefaultForm.SortIndex) .Select(v => v.Id) .ToList(); _elementalTypeRelations = _dbContext.ElementalTypeRelations .AsNoTracking() .ToList(); _elementalTypes = _dbContext.ElementalTypes .AsNoTracking() .ToList(); _evolutions = _dbContext.Evolutions .Include(e => e.BasePokemonVariety.DefaultForm) .Include(e => e.BasePokemonVariety.PrimaryAbility) .Include(e => e.BasePokemonVariety.SecondaryAbility) .Include(e => e.BasePokemonVariety.HiddenAbility) .Include(e => e.BasePokemonVariety.PrimaryType) .Include(e => e.BasePokemonVariety.SecondaryType) .Include(e => e.EvolvedPokemonVariety.DefaultForm) .Include(e => e.EvolvedPokemonVariety.PrimaryAbility) .Include(e => e.EvolvedPokemonVariety.SecondaryAbility) .Include(e => e.EvolvedPokemonVariety.HiddenAbility) .Include(e => e.EvolvedPokemonVariety.PrimaryType) .Include(e => e.EvolvedPokemonVariety.SecondaryType) .Include(e => e.BasePokemonSpecies) .AsNoTracking() .ToList(); var result = new List <PokemonVarietyReadModel>(); for (var i = 0; i < varietyIds.Count; i++) { var varietyId = varietyIds[i]; var variety = LoadVariety(varietyId); var readModel = GetBasicReadModel(variety); AttachVarieties(readModel, variety); AttachForms(readModel, variety); AttachEvolutionAbilities(readModel, variety); int previousId = i != 0 ? varietyIds[i - 1] : varietyIds[^ 1];
public IDictionary <NatureReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report) { return(_dbContext.Natures .AsNoTracking() .Select(nature => new NatureReadModel { Name = nature.Name, ApplicationDbId = nature.Id, Effect = nature.GetDescription(), Attack = nature.Attack, SpecialAttack = nature.SpecialAttack, Defense = nature.Defense, SpecialDefense = nature.SpecialDefense, Speed = nature.Speed, }) .ToDictionary(x => x, _ => DbAction.Create)); }
public IDictionary <SimpleLearnableMoveReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report) { return(_dbContext.LearnableMoves .Include(lm => lm.PokemonVariety) .Include(lm => lm.Move) .Include(lm => lm.LearnMethods) .AsNoTracking() .ToList() .Where(learnableMove => learnableMove.LearnMethods.Any(learnMethod => learnMethod.IsAvailable)) .Select(learnableMove => new SimpleLearnableMoveReadModel { ApplicationDbId = learnableMove.Id, PokemonVarietyApplicationDbId = learnableMove.PokemonVariety.Id, MoveResourceName = learnableMove.Move.ResourceName }) .ToDictionary(x => x, _ => DbAction.Create)); }
public IDictionary <ItemReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport importReport) { return(_dbContext.Items .Where(i => i.DoInclude) .Include(i => i.BagCategory) .Include(i => i.PlacedItems) .ThenInclude(pi => pi.Location) .ThenInclude(l => l.LocationGroup) .ThenInclude(lg => lg.Region) .Select(i => new ItemReadModel { ApplicationDbId = i.Id, ResourceName = i.ResourceName, SortIndex = i.SortIndex, Name = i.Name, Description = i.Description, Effect = i.Effect, IsAvailable = i.IsAvailable, SpriteName = i.SpriteName, BagCategoryName = i.BagCategory.Name, BagCategorySortIndex = i.BagCategory.SortIndex, PlacedItems = i.PlacedItems.Select(pi => new PlacedItemReadModel { ApplicationDbId = pi.Id, ItemResourceName = i.ResourceName, ItemName = i.Name, ItemSpriteName = i.SpriteName, RegionName = pi.Location.LocationGroup.Region.Name, RegionColor = pi.Location.LocationGroup.Region.Color, LocationName = pi.Location.Name, LocationResourceName = pi.Location.LocationGroup.ResourceName, LocationSortIndex = pi.Location.SortIndex, SortIndex = pi.SortIndex, Index = pi.Index, PlacementDescription = pi.PlacementDescription, IsHidden = pi.IsHidden, IsConfirmed = pi.IsConfirmed, Quantity = pi.Quantity, Notes = pi.Notes, Screenshot = pi.ScreenshotName }).ToList() }) .AsNoTracking() .AsSingleQuery() .ToDictionary(x => x, _ => DbAction.Create)); }
public IDictionary <MoveReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report) { return(_dbContext.Moves .Include(m => m.DamageClass) .Include(m => m.ElementalType) .AsNoTracking() .Where(m => m.DoInclude) .OrderBy(m => m.Name) .Select(move => new MoveReadModel { ApplicationDbId = move.Id, Name = move.Name, ResourceName = move.ResourceName, DamageClass = move.DamageClass.Name, ElementalType = move.ElementalType.Name, AttackPower = move.AttackPower, Accuracy = move.Accuracy, PowerPoints = move.PowerPoints, Priority = move.Priority, EffectDescription = move.Effect }) .ToDictionary(x => x, _ => DbAction.Create)); }
public IDictionary <ItemStatBoostPokemonReadModel, DbAction> MapFromDatabase(SpreadsheetImportReport report) { return(_dbContext.ItemStatBoostPokemon .Include(i => i.ItemStatBoost.Item) .Include(i => i.PokemonVariety) .AsNoTracking() .Select(x => new ItemStatBoostPokemonReadModel { ApplicationDbId = x.Id, ItemName = x.ItemStatBoost.Item.Name, ItemResourceName = x.ItemStatBoost.Item.ResourceName, ItemEffect = x.ItemStatBoost.Item.Effect, AttackBoost = x.ItemStatBoost.AttackBoost, DefenseBoost = x.ItemStatBoost.DefenseBoost, SpecialAttackBoost = x.ItemStatBoost.SpecialAttackBoost, SpecialDefenseBoost = x.ItemStatBoost.SpecialDefenseBoost, SpeedBoost = x.ItemStatBoost.SpeedBoost, HitPointsBoost = x.ItemStatBoost.HitPointsBoost, HasRequiredPokemon = x.PokemonVariety != null, RequiredPokemonName = x.PokemonVariety.Name, RequiredPokemonResourceName = x.PokemonVariety.ResourceName }) .ToDictionary(x => x, _ => DbAction.Create)); }