Dictionaries DB structure refactored

This commit is contained in:
Mikhail Shabanov committed 2020-06-24 12:19:03 +02:00
1 parent 9b80314b92
commit 6c10c6c654
25 files changed
+251 -117

No files matched your search

@@ -1,8 +1,10 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MongoDB.Driver;
using WotBlitzStatisticsPro.Common;
using WotBlitzStatisticsPro.Common.Dictionaries;
using WotBlitzStatisticsPro.DataAccess.Model;
namespace WotBlitzStatisticsPro.DataAccess
{
@@ -24,63 +26,70 @@ namespace WotBlitzStatisticsPro.DataAccess
_database = client.GetDatabase(settings.DatabaseName);
}
public async Task UpdateLanguages(List<LanguageDictionary> languages)
public async Task UpdateLanguages(List<ILanguageDictionary> languages)
{
var dbLanguages = _database.GetCollection<LanguageDictionary>(LanguagesCollectionName);
var dbLanguages = _database.GetCollection<ILanguageDictionary>(LanguagesCollectionName);
await dbLanguages.DeleteManyAsync(Builders<LanguageDictionary>.Filter.Empty);
await dbLanguages.DeleteManyAsync(Builders<ILanguageDictionary>.Filter.Empty);
await dbLanguages.InsertManyAsync(languages);
}
public async Task UpdateNations(List<NationDictionary> nations)
public async Task UpdateNations(List<INationDictionary> nations)
{
var dbNations = _database.GetCollection<NationDictionary>(NationsCollectionName);
var dbNations = _database.GetCollection<INationDictionary>(NationsCollectionName);
await dbNations.DeleteManyAsync(Builders<NationDictionary>.Filter.Empty);
await dbNations.DeleteManyAsync(Builders<INationDictionary>.Filter.Empty);
await dbNations.InsertManyAsync(nations);
}
public async Task UpdateVehicleTypes(List<VehicleTypeDictionary> vehicleTypes)
public async Task UpdateVehicleTypes(List<IVehicleTypeDictionary> vehicleTypes)
{
var dbVehicleTypes = _database.GetCollection<VehicleTypeDictionary>(VehicleTypesCollectionName);
var dbVehicleTypes = _database.GetCollection<IVehicleTypeDictionary>(VehicleTypesCollectionName);
await dbVehicleTypes.DeleteManyAsync(Builders<VehicleTypeDictionary>.Filter.Empty);
await dbVehicleTypes.DeleteManyAsync(Builders<IVehicleTypeDictionary>.Filter.Empty);
await dbVehicleTypes.InsertManyAsync(vehicleTypes);
}
public async Task UpdateClanRoles(List<ClanRoleDictionary> clanRoles)
public async Task UpdateClanRoles(List<IClanRoleDictionary> clanRoles)
{
var dbClanRoles = _database.GetCollection<ClanRoleDictionary>(ClanRolesCollectionName);
var dbClanRoles = _database.GetCollection<IClanRoleDictionary>(ClanRolesCollectionName);
await dbClanRoles.DeleteManyAsync(Builders<ClanRoleDictionary>.Filter.Empty);
await dbClanRoles.DeleteManyAsync(Builders<IClanRoleDictionary>.Filter.Empty);
await dbClanRoles.InsertManyAsync(clanRoles);
}
public async Task UpdateAchievementsSections(List<AchievementSectionDictionary> achievementSections)
public async Task UpdateAchievementsSections(List<IAchievementSectionDictionary> achievementSections)
{
var dbAchievementSections =
_database.GetCollection<AchievementSectionDictionary>(AchievementsSectionsCollectionName);
_database.GetCollection<IAchievementSectionDictionary>(AchievementsSectionsCollectionName);
await dbAchievementSections.DeleteManyAsync(Builders<AchievementSectionDictionary>.Filter.Empty);
await dbAchievementSections.DeleteManyAsync(Builders<IAchievementSectionDictionary>.Filter.Empty);
await dbAchievementSections.InsertManyAsync(achievementSections);
}
public async Task UpdateAchievements(List<AchievementDictionary> achievementDictionary)
public async Task UpdateAchievements(List<IAchievementDictionary> achievementDictionary)
{
var dbAchievementSections =
_database.GetCollection<AchievementDictionary>(AchievementsCollectionName);
_database.GetCollection<IAchievementDictionary>(AchievementsCollectionName);
await dbAchievementSections.DeleteManyAsync(Builders<AchievementDictionary>.Filter.Empty);
await dbAchievementSections.DeleteManyAsync(Builders<IAchievementDictionary>.Filter.Empty);
await dbAchievementSections.InsertManyAsync(achievementDictionary);
}
public async Task UpdateVehicles(List<VehiclesDictionary> vehiclesDictionary)
public async Task UpdateVehicles(List<IVehiclesDictionary> vehiclesDictionary)
{
var dbVehicles =
_database.GetCollection<VehiclesDictionary>(VehiclesCollectionName);
_database.GetCollection<IVehiclesDictionary>(VehiclesCollectionName);
await dbVehicles.DeleteManyAsync(Builders<VehiclesDictionary>.Filter.Empty);
await dbVehicles.DeleteManyAsync(Builders<IVehiclesDictionary>.Filter.Empty);
await dbVehicles.InsertManyAsync(vehiclesDictionary);
}
public async Task<List<ILanguageDictionary>> ReadLanguages()
{
var collection = await _database.GetCollection<ILanguageDictionary>(LanguagesCollectionName)
.FindAsync(Builders<ILanguageDictionary>.Filter.Empty);
return collection.ToList();
}
}
}
@@ -6,18 +6,20 @@ namespace WotBlitzStatisticsPro.DataAccess
{
public interface IDictionariesDataAccessor
{
Task UpdateLanguages(List<LanguageDictionary> languages);
Task UpdateLanguages(List<ILanguageDictionary> languages);
Task UpdateNations(List<NationDictionary> nations);
Task UpdateNations(List<INationDictionary> nations);
Task UpdateVehicleTypes(List<VehicleTypeDictionary> vehicleTypes);
Task UpdateVehicleTypes(List<IVehicleTypeDictionary> vehicleTypes);
Task UpdateClanRoles(List<ClanRoleDictionary> clanRoles);
Task UpdateClanRoles(List<IClanRoleDictionary> clanRoles);
Task UpdateAchievementsSections(List<AchievementSectionDictionary> achievementSections);
Task UpdateAchievementsSections(List<IAchievementSectionDictionary> achievementSections);
Task UpdateAchievements(List<AchievementDictionary> achievementDictionary);
Task UpdateAchievements(List<IAchievementDictionary> achievementDictionary);
Task UpdateVehicles(List<VehiclesDictionary> vehiclesDictionary);
Task UpdateVehicles(List<IVehiclesDictionary> vehiclesDictionary);
Task<List<ILanguageDictionary>> ReadLanguages();
}
}
@@ -0,0 +1,24 @@
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using WotBlitzStatisticsPro.Common.Dictionaries;
namespace WotBlitzStatisticsPro.DataAccess.Model
{
public class AchievementDictionary : IAchievementDictionary
{
[BsonId]
public string AchievementId { get; set; }
public List<LocalizableString> Condition { get; set; }
public List<LocalizableString> Description { get; set; }
public List<LocalizableString> HeroInfo { get; set; }
public string Image { get; set; }
public string ImageBig { get; set; }
public List<LocalizableString> Name { get; set; }
public long? Order { get; set; }
public bool Outdated { get; set; }
public string SectionId { get; set; }
public long? SectionOrder { get; set; }
public string Type { get; set; }
public List<AchievementOption> Options { get; set; }
}
}
@@ -0,0 +1,14 @@
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using WotBlitzStatisticsPro.Common.Dictionaries;
namespace WotBlitzStatisticsPro.DataAccess.Model
{
public class AchievementSectionDictionary: IAchievementSectionDictionary
{
[BsonId]
public string AchievementSectionId { get; set; }
public int Order { get; set; }
public List<LocalizableString> AchievementSectionNames { get; set; }
}
}
@@ -0,0 +1,13 @@
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using WotBlitzStatisticsPro.Common.Dictionaries;
namespace WotBlitzStatisticsPro.DataAccess.Model
{
public class ClanRoleDictionary : IClanRoleDictionary
{
[BsonId]
public string ClanRoleId { get; set; }
public List<LocalizableString> ClanRoleNames { get; set; }
}
}
@@ -0,0 +1,13 @@
using MongoDB.Bson.Serialization.Attributes;
using WotBlitzStatisticsPro.Common.Dictionaries;
namespace WotBlitzStatisticsPro.DataAccess.Model
{
public class LanguageDictionary: ILanguageDictionary
{
[BsonId]
public string LanguageId { get; set; }
public string LanguageName { get; set; }
}
}
@@ -0,0 +1,13 @@
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using WotBlitzStatisticsPro.Common.Dictionaries;
namespace WotBlitzStatisticsPro.DataAccess.Model
{
public class NationDictionary : INationDictionary
{
[BsonId]
public string NationId { get; set; }
public List<LocalizableString> NationNames { get; set; }
}
}
@@ -0,0 +1,13 @@
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using WotBlitzStatisticsPro.Common.Dictionaries;
namespace WotBlitzStatisticsPro.DataAccess.Model
{
public class VehicleTypeDictionary : IVehicleTypeDictionary
{
[BsonId]
public string VehicleTypeId { get; set; }
public List<LocalizableString> VehicleTypeNames { get; set; }
}
}
@@ -0,0 +1,28 @@
using System.Collections.Generic;
using MongoDB.Bson.Serialization.Attributes;
using WotBlitzStatisticsPro.Common.Dictionaries;
namespace WotBlitzStatisticsPro.DataAccess.Model
{
public class VehiclesDictionary : IVehiclesDictionary
{
[BsonId]
public long TankId { get; set; }
public List<LocalizableString> Name { get; set; }
public List<LocalizableString> Description { get; set; }
public bool IsPremium { get; set; }
public string TypeId { get; set; }
public string NationId { get; set; }
public int Tier { get; set; }
public string PreviewImage { get; set; }
public string NormalImage { get; set; }
public decimal PriceCredit { get; set; }
public decimal PriceGold { get; set; }
public List<VehiclePriceInXp> NexTanksInTree { get; set; }
public List<VehiclePriceInXp> PriceXp { get; set; }
public int[] Engines { get; set; }
public int[] Guns { get; set; }
public int[] Suspensions { get; set; }
public int[] Turrets { get; set; }
}
}