From 3f4fdadb6597d8bf67d466d67982ea3b9825e5c2 Mon Sep 17 00:00:00 2001 From: Mikhail Shabanov Date: Thu, 21 May 2020 17:53:01 +0200 Subject: [PATCH] Ditionaries Mutation beginning --- .../Mutation/WotBlitzStatisticsMutation.cs | 31 ++++++++++++++++++ .../Query/WotBlitzStatisticsQuery.cs | 3 ++ WotBlitzStatistics.GraphQl/Startup.cs | 3 +- .../IWargamingDictionaries.cs | 11 +++++++ .../WargamingDictionaries.cs | 25 +++++++++++++++ .../WotBlitzStatisticsLogicInstaller.cs | 1 + .../Model/DictionaryType.cs | 32 +++++++++++++++++++ .../Model/MarkOfMastery.cs | 18 +++++++++++ .../Model/UpdateDictionariesRequest.cs | 13 ++++++++ .../Model/UpdateDictionariesResponseItem.cs | 18 +++++++++++ 10 files changed, 154 insertions(+), 1 deletion(-) create mode 100644 WotBlitzStatistics.GraphQl/Mutation/WotBlitzStatisticsMutation.cs create mode 100644 WotBlitzStatistics.Logic/IWargamingDictionaries.cs create mode 100644 WotBlitzStatistics.Logic/WargamingDictionaries.cs create mode 100644 WotBlitzStatisticsPro.Common/Model/DictionaryType.cs create mode 100644 WotBlitzStatisticsPro.Common/Model/UpdateDictionariesRequest.cs create mode 100644 WotBlitzStatisticsPro.Common/Model/UpdateDictionariesResponseItem.cs diff --git a/WotBlitzStatistics.GraphQl/Mutation/WotBlitzStatisticsMutation.cs b/WotBlitzStatistics.GraphQl/Mutation/WotBlitzStatisticsMutation.cs new file mode 100644 index 0000000..c7f4206 --- /dev/null +++ b/WotBlitzStatistics.GraphQl/Mutation/WotBlitzStatisticsMutation.cs @@ -0,0 +1,31 @@ +using System; +using System.Threading.Tasks; +using WotBlitzStatistics.Logic; +using WotBlitzStatisticsPro.Common.Model; + +namespace WotBlitzStatistics.GraphQl.Mutation +{ + /// + /// WotBlitzStatistics Mutations + /// + public class WotBlitzStatisticsMutation + { + private readonly IWargamingDictionaries _wargamingDictionaries; + + public WotBlitzStatisticsMutation(IWargamingDictionaries wargamingDictionaries) + { + _wargamingDictionaries = wargamingDictionaries; + } + + /// + /// Updates the necessary dictionaries in database. + /// + /// Determines what dictionaries should be updated. + /// Information about what was updated. + public Task UpdateDictionaries( + UpdateDictionariesRequest updateDictionariesRequest) + { + return _wargamingDictionaries.UpdateDictionaries(updateDictionariesRequest); + } + } +} \ No newline at end of file diff --git a/WotBlitzStatistics.GraphQl/Query/WotBlitzStatisticsQuery.cs b/WotBlitzStatistics.GraphQl/Query/WotBlitzStatisticsQuery.cs index 44c1060..420c2c8 100644 --- a/WotBlitzStatistics.GraphQl/Query/WotBlitzStatisticsQuery.cs +++ b/WotBlitzStatistics.GraphQl/Query/WotBlitzStatisticsQuery.cs @@ -7,6 +7,9 @@ namespace WotBlitzStatistics.GraphQl.Query { public class WotBlitzStatisticsQuery { + // 571050560 - mboga Eu + // 90277267 - Mboga Ru + private readonly IWargamingSearch _wargamingSearcher; public WotBlitzStatisticsQuery(IWargamingSearch wargamingSearcher) diff --git a/WotBlitzStatistics.GraphQl/Startup.cs b/WotBlitzStatistics.GraphQl/Startup.cs index eb5d480..c6a238c 100644 --- a/WotBlitzStatistics.GraphQl/Startup.cs +++ b/WotBlitzStatistics.GraphQl/Startup.cs @@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using WotBlitzStatistics.GraphQl.Mutation; using WotBlitzStatistics.GraphQl.ObjectTypes; using WotBlitzStatistics.GraphQl.Query; using WotBlitzStatistics.Logic; @@ -49,7 +50,7 @@ namespace WotBlitzStatistics.GraphQl .AddAuthorizeDirectiveType() .AddQueryType() - //.AddMutationType() + .AddMutationType() //.AddSubscriptionType() .AddType() .AddType() diff --git a/WotBlitzStatistics.Logic/IWargamingDictionaries.cs b/WotBlitzStatistics.Logic/IWargamingDictionaries.cs new file mode 100644 index 0000000..6e3a9cb --- /dev/null +++ b/WotBlitzStatistics.Logic/IWargamingDictionaries.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using WotBlitzStatisticsPro.Common.Model; + +namespace WotBlitzStatistics.Logic +{ + public interface IWargamingDictionaries + { + Task UpdateDictionaries( + UpdateDictionariesRequest updateDictionariesRequest); + } +} \ No newline at end of file diff --git a/WotBlitzStatistics.Logic/WargamingDictionaries.cs b/WotBlitzStatistics.Logic/WargamingDictionaries.cs new file mode 100644 index 0000000..e46c2d1 --- /dev/null +++ b/WotBlitzStatistics.Logic/WargamingDictionaries.cs @@ -0,0 +1,25 @@ +using System.Threading.Tasks; +using WotBlitzStatisticsPro.Common.Model; + +namespace WotBlitzStatistics.Logic +{ + public class WargamingDictionaries: IWargamingDictionaries + { + public Task UpdateDictionaries(UpdateDictionariesRequest updateDictionariesRequest) + { + if ((updateDictionariesRequest.DictionaryTypes & DictionaryType.StaticDictionaries) != 0) + { + // Update static + } + if ((updateDictionariesRequest.DictionaryTypes & DictionaryType.Achievements) != 0) + { + // Update achievements + } + if ((updateDictionariesRequest.DictionaryTypes & DictionaryType.Vehicles) != 0) + { + // Update vehicles + } + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/WotBlitzStatistics.Logic/WotBlitzStatisticsLogicInstaller.cs b/WotBlitzStatistics.Logic/WotBlitzStatisticsLogicInstaller.cs index ea0f9e9..bd79401 100644 --- a/WotBlitzStatistics.Logic/WotBlitzStatisticsLogicInstaller.cs +++ b/WotBlitzStatistics.Logic/WotBlitzStatisticsLogicInstaller.cs @@ -11,6 +11,7 @@ namespace WotBlitzStatistics.Logic services.AddAutoMapper(typeof(WotBlitzStatisticsLogicInstaller)); services.AddHttpClient(); services.AddTransient(); + services.AddTransient(); } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Model/DictionaryType.cs b/WotBlitzStatisticsPro.Common/Model/DictionaryType.cs new file mode 100644 index 0000000..4057087 --- /dev/null +++ b/WotBlitzStatisticsPro.Common/Model/DictionaryType.cs @@ -0,0 +1,32 @@ +using System; + +namespace WotBlitzStatisticsPro.Common.Model +{ + /// + /// List of dictionaries + /// + [Flags] + public enum DictionaryType + { + /// + /// Static dictionaries - Languages, VehicleNations, VehicleTypes, AchievementSections, ClanRoles + /// + StaticDictionaries = 1, + /// + /// Achievements + /// + Achievements = 2, + /// + /// Vehicles encyclopedia + /// + Vehicles = 4, + /// + /// Only vehicles and Achievements + /// + AchievementsAndVehicles = Achievements | Vehicles, + /// + /// All dictionaries + /// + All = StaticDictionaries | Achievements | Vehicles + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Model/MarkOfMastery.cs b/WotBlitzStatisticsPro.Common/Model/MarkOfMastery.cs index a329182..88f5392 100644 --- a/WotBlitzStatisticsPro.Common/Model/MarkOfMastery.cs +++ b/WotBlitzStatisticsPro.Common/Model/MarkOfMastery.cs @@ -1,11 +1,29 @@ namespace WotBlitzStatisticsPro.Common.Model { + /// + /// Mastery + /// public enum MarkOfMastery { + /// + /// No mastery + /// None = 0, + /// + /// Third mark of mastery + /// Rank3 = 1, + /// + /// Second mark of mastery + /// Rank2 = 2, + /// + /// First mark of mastery + /// Rank1 = 3, + /// + /// Master mark + /// Master = 4 } } diff --git a/WotBlitzStatisticsPro.Common/Model/UpdateDictionariesRequest.cs b/WotBlitzStatisticsPro.Common/Model/UpdateDictionariesRequest.cs new file mode 100644 index 0000000..a958892 --- /dev/null +++ b/WotBlitzStatisticsPro.Common/Model/UpdateDictionariesRequest.cs @@ -0,0 +1,13 @@ +namespace WotBlitzStatisticsPro.Common.Model +{ + /// + /// Request for update dictionaries mutation + /// + public class UpdateDictionariesRequest + { + /// + /// Determines what dictionaries should be updated. Usage: StaticDictionaries | Achievements | Vehicles + /// + public DictionaryType DictionaryTypes { get; set; } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Common/Model/UpdateDictionariesResponseItem.cs b/WotBlitzStatisticsPro.Common/Model/UpdateDictionariesResponseItem.cs new file mode 100644 index 0000000..8c31278 --- /dev/null +++ b/WotBlitzStatisticsPro.Common/Model/UpdateDictionariesResponseItem.cs @@ -0,0 +1,18 @@ +namespace WotBlitzStatisticsPro.Common.Model +{ + /// + /// Represents the response of the Update dictionaries mutation + /// + public class UpdateDictionariesResponseItem + { + /// + /// Type of updated dictionary + /// + public DictionaryType DictionaryType { get; set; } + + /// + /// A bit summary about what have been updated + /// + public string Description { get; set; } + } +} \ No newline at end of file