From 1e2fa287a01105d1b0627fd658ee660f6dd06b29 Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Fri, 28 Feb 2025 13:15:27 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=20=D1=80=D0=B5=D0=B7=D1=83=D0=BB=D1=8C=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BC=20=D1=80=D0=B5=D0=B2=D1=8C=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Mapping/Clients/SetpointMappingClient.cs | 8 +++--- .../Clients/TimestampedMappingClient.cs | 1 + .../Clients/Mapping/MapperStorage.cs | 12 ++++++--- .../Clients/Mapping/TimestampedSetMapper.cs | 26 +++++++++++++++---- DD.Persistence.Test/MappingClientsTest.cs | 4 ++- 5 files changed, 38 insertions(+), 13 deletions(-) diff --git a/DD.Persistence.Client/Clients/Mapping/Clients/SetpointMappingClient.cs b/DD.Persistence.Client/Clients/Mapping/Clients/SetpointMappingClient.cs index a090d4d..1942ad4 100644 --- a/DD.Persistence.Client/Clients/Mapping/Clients/SetpointMappingClient.cs +++ b/DD.Persistence.Client/Clients/Mapping/Clients/SetpointMappingClient.cs @@ -13,6 +13,7 @@ public class SetpointMappingClient : ISetpointMappingClient private readonly ISetpointClient setpointClient; private readonly MappingConfig mappingConfigs; + /// public SetpointMappingClient(ISetpointClient setpointClient, MappingConfig mappingConfigs) { this.setpointClient = setpointClient; @@ -62,11 +63,11 @@ public class SetpointMappingClient : ISetpointMappingClient /// public async Task> GetPart(DateTimeOffset dateBegin, int take, CancellationToken token) { - var res = await setpointClient.GetPart(dateBegin, take, token); + var result = await setpointClient.GetPart(dateBegin, take, token); - DeserializeList(res); + DeserializeList(result); - return res; + return result; } /// @@ -81,6 +82,7 @@ public class SetpointMappingClient : ISetpointMappingClient public void Dispose() { setpointClient.Dispose(); + } private object DeserializeValue(Guid key, JsonElement value) diff --git a/DD.Persistence.Client/Clients/Mapping/Clients/TimestampedMappingClient.cs b/DD.Persistence.Client/Clients/Mapping/Clients/TimestampedMappingClient.cs index 0d73376..09aa283 100644 --- a/DD.Persistence.Client/Clients/Mapping/Clients/TimestampedMappingClient.cs +++ b/DD.Persistence.Client/Clients/Mapping/Clients/TimestampedMappingClient.cs @@ -2,6 +2,7 @@ using DD.Persistence.Client.Clients.Mapping.Abstractions; using DD.Persistence.Models; using DD.Persistence.Models.Common; +using Microsoft.Extensions.Logging; namespace DD.Persistence.Client.Clients.Mapping.Clients; diff --git a/DD.Persistence.Client/Clients/Mapping/MapperStorage.cs b/DD.Persistence.Client/Clients/Mapping/MapperStorage.cs index ab0d91c..74d33d7 100644 --- a/DD.Persistence.Client/Clients/Mapping/MapperStorage.cs +++ b/DD.Persistence.Client/Clients/Mapping/MapperStorage.cs @@ -1,5 +1,6 @@ using DD.Persistence.Client.Clients.Mapping.Abstractions; using DD.Persistence.Models.Configurations; +using Microsoft.Extensions.Logging; using System; using System.Collections.Concurrent; @@ -8,22 +9,25 @@ internal class MapperStorage : IMapperStorage { private readonly ConcurrentDictionary mapperCache = new(); private readonly MappingConfig mappingConfigs; - public MapperStorage(MappingConfig mappingConfigs) + private readonly ILogger logger; + + public MapperStorage(MappingConfig mappingConfigs, ILogger logger) { this.mappingConfigs = mappingConfigs; + this.logger = logger; } public TimestampedSetMapper? GetMapper(Guid idDiscriminator) { - if(mappingConfigs.TryGetValue(idDiscriminator, out var type)) - return mapperCache.GetOrAdd(idDiscriminator, name => new TimestampedSetMapper(idDiscriminator, type)); + if (mappingConfigs.TryGetValue(idDiscriminator, out var type)) + return mapperCache.GetOrAdd(idDiscriminator, name => new TimestampedSetMapper(idDiscriminator, type, logger)); return null; } public TimestampedSetMapper GetMapper(Guid idDiscriminator) { - return mapperCache.GetOrAdd(idDiscriminator, name => new TimestampedSetMapper(idDiscriminator, typeof(T))); + return mapperCache.GetOrAdd(idDiscriminator, name => new TimestampedSetMapper(idDiscriminator, typeof(T), logger)); } } diff --git a/DD.Persistence.Client/Clients/Mapping/TimestampedSetMapper.cs b/DD.Persistence.Client/Clients/Mapping/TimestampedSetMapper.cs index 1911d09..38c1bea 100644 --- a/DD.Persistence.Client/Clients/Mapping/TimestampedSetMapper.cs +++ b/DD.Persistence.Client/Clients/Mapping/TimestampedSetMapper.cs @@ -1,4 +1,5 @@ using DD.Persistence.Models; +using Microsoft.Extensions.Logging; using System.Collections.Concurrent; using System.Reflection; using System.Runtime.CompilerServices; @@ -9,13 +10,16 @@ namespace DD.Persistence.Client.Clients.Mapping; internal class TimestampedSetMapper { private readonly Type entityType; + private readonly ILogger logger; + public Guid IdDiscriminator { get; } private readonly ConcurrentDictionary PropertyCache = new(); - public TimestampedSetMapper(Guid idDiscriminator, Type entityType) + public TimestampedSetMapper(Guid idDiscriminator, Type entityType, ILogger logger) { IdDiscriminator = idDiscriminator; this.entityType = entityType; + this.logger = logger; } public object DeserializeTimeStampedData(TimestampedValuesDto data) @@ -66,7 +70,10 @@ internal class TimestampedSetMapper var value = element.Deserialize(property.PropertyType); property.SetValue(entity, value); } - catch (Exception) { } + catch (Exception ex) + { + logger.LogError(ex.Message); + } } private void SetPropertyValueForStruct(ref object entity, string propertyName, object value) { @@ -79,7 +86,10 @@ internal class TimestampedSetMapper var convertedValue = Convert.ChangeType(value, property.PropertyType); property.SetValue(entity, convertedValue); } - catch (Exception) { } + catch (Exception ex) + { + logger.LogError(ex.Message); + } } @@ -95,7 +105,10 @@ internal class TimestampedSetMapper var value = jsonElement.Deserialize(property.PropertyType); property.SetValue(entity, value); } - catch (Exception) { } + catch (Exception ex) + { + logger.LogError(ex.Message); + } } private void SetPropertyValue(ref object entity, string propertyName, object value) @@ -109,7 +122,10 @@ internal class TimestampedSetMapper var convertedValue = Convert.ChangeType(value, property.PropertyType); property.SetValue(entity, convertedValue); } - catch (Exception) { } + catch (Exception ex) + { + logger.LogError(ex.Message); + } } private PropertyInfo? GetPropertyInfo(string propertyName) diff --git a/DD.Persistence.Test/MappingClientsTest.cs b/DD.Persistence.Test/MappingClientsTest.cs index 78648f9..b5d2e70 100644 --- a/DD.Persistence.Test/MappingClientsTest.cs +++ b/DD.Persistence.Test/MappingClientsTest.cs @@ -3,6 +3,7 @@ using DD.Persistence.Client.Clients.Mapping; using DD.Persistence.Client.Clients.Mapping.Clients; using DD.Persistence.Models; using DD.Persistence.Models.Configurations; +using Microsoft.Extensions.Logging; using NSubstitute; using System.Text.Json; @@ -15,6 +16,7 @@ public record SecondTestDto(Guid DiscriminatorId, DateTimeOffset Timestamp, int public class MappingClientsTest { private readonly ITimestampedValuesClient timestampedValuesClient = Substitute.For(); + private readonly ILogger logger = Substitute.For>(); private readonly TimestampedMappingClient timestampedMappingClient; private readonly MappingConfig mappingConfigs; @@ -23,7 +25,7 @@ public class MappingClientsTest public MappingClientsTest() { mappingConfigs = GetConfig(); - var storage = new MapperStorage(mappingConfigs); + var storage = new MapperStorage(mappingConfigs, logger); timestampedMappingClient = new TimestampedMappingClient(timestampedValuesClient, storage); }