diff --git a/DD.Persistence.API/DD.Persistence.API.csproj b/DD.Persistence.API/DD.Persistence.API.csproj index 5ed1097..38dd298 100644 --- a/DD.Persistence.API/DD.Persistence.API.csproj +++ b/DD.Persistence.API/DD.Persistence.API.csproj @@ -25,7 +25,6 @@ - diff --git a/DD.Persistence.API/Startup.cs b/DD.Persistence.API/Startup.cs index 1a880c0..bc78548 100644 --- a/DD.Persistence.API/Startup.cs +++ b/DD.Persistence.API/Startup.cs @@ -1,6 +1,5 @@ using DD.Persistence.Database.Model; using DD.Persistence.Database.Postgres.Extensions; -using DD.Persistence.Repository; namespace DD.Persistence.API; diff --git a/DD.Persistence.Database.Postgres/DD.Persistence.Database.Postgres.csproj b/DD.Persistence.Database.Postgres/DD.Persistence.Database.Postgres.csproj index bf406a6..80b6736 100644 --- a/DD.Persistence.Database.Postgres/DD.Persistence.Database.Postgres.csproj +++ b/DD.Persistence.Database.Postgres/DD.Persistence.Database.Postgres.csproj @@ -7,11 +7,13 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/DD.Persistence.Database.Postgres/DependencyInjection.cs b/DD.Persistence.Database.Postgres/DependencyInjection.cs index f0c8ff1..0509061 100644 --- a/DD.Persistence.Database.Postgres/DependencyInjection.cs +++ b/DD.Persistence.Database.Postgres/DependencyInjection.cs @@ -1,6 +1,13 @@ -using Microsoft.EntityFrameworkCore; +using DD.Persistence.Database.Entity; +using DD.Persistence.Database.Postgres.Repositories; +using DD.Persistence.Database.Postgres.RepositoriesCached; +using DD.Persistence.Models; +using DD.Persistence.Repositories; +using Mapster; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using System.Reflection; namespace DD.Persistence.Database.Model; @@ -17,4 +24,37 @@ public static class DependencyInjection return services; } + + public static void MapsterSetup() + { + TypeAdapterConfig.GlobalSettings.Default.Config + .ForType() + .Ignore(dest => dest.System, dest => dest.SystemId); + + TypeAdapterConfig.NewConfig() + .Map(dest => dest.Value, src => new ChangeLogValuesDto() + { + Value = src.Value, + Id = src.Id + }); + } + + public static IServiceCollection AddInfrastructure(this IServiceCollection services) + { + var typeAdapterConfig = TypeAdapterConfig.GlobalSettings; + typeAdapterConfig.RuleMap.Clear(); + typeAdapterConfig.Scan(Assembly.GetExecutingAssembly()); + + MapsterSetup(); + + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + + return services; + } } diff --git a/DD.Persistence.Repository/Extensions/EFExtensionsSortBy.cs b/DD.Persistence.Database.Postgres/Extensions/EFExtensionsSortBy.cs similarity index 99% rename from DD.Persistence.Repository/Extensions/EFExtensionsSortBy.cs rename to DD.Persistence.Database.Postgres/Extensions/EFExtensionsSortBy.cs index bed529e..3af7ae0 100644 --- a/DD.Persistence.Repository/Extensions/EFExtensionsSortBy.cs +++ b/DD.Persistence.Database.Postgres/Extensions/EFExtensionsSortBy.cs @@ -2,7 +2,7 @@ using System.Collections.Concurrent; using System.Linq.Expressions; using System.Reflection; -namespace DD.Persistence.Repository.Extensions; +namespace DD.Persistence.Database.Postgres.Extensions; public static class EFExtensionsSortBy { diff --git a/DD.Persistence.Repository/CyclicArray.cs b/DD.Persistence.Database.Postgres/Helpers/CyclicArray.cs similarity index 99% rename from DD.Persistence.Repository/CyclicArray.cs rename to DD.Persistence.Database.Postgres/Helpers/CyclicArray.cs index 7a7ea1d..fcb5793 100644 --- a/DD.Persistence.Repository/CyclicArray.cs +++ b/DD.Persistence.Database.Postgres/Helpers/CyclicArray.cs @@ -1,6 +1,6 @@ using System.Collections; -namespace DD.Persistence.Repository; +namespace DD.Persistence.Database.Postgres.Helpers; /// /// Цикличный массив /// diff --git a/DD.Persistence.Repository/QueryBuilders.cs b/DD.Persistence.Database.Postgres/Helpers/QueryBuilders.cs similarity index 90% rename from DD.Persistence.Repository/QueryBuilders.cs rename to DD.Persistence.Database.Postgres/Helpers/QueryBuilders.cs index 52b6429..8529230 100644 --- a/DD.Persistence.Repository/QueryBuilders.cs +++ b/DD.Persistence.Database.Postgres/Helpers/QueryBuilders.cs @@ -1,11 +1,10 @@ -using Microsoft.EntityFrameworkCore; -using DD.Persistence.Models.Requests; -using DD.Persistence.Models.Common; -using DD.Persistence.ModelsAbstractions; -using DD.Persistence.Database.EntityAbstractions; +using DD.Persistence.Database.EntityAbstractions; using DD.Persistence.Extensions; +using DD.Persistence.Models.Common; +using DD.Persistence.Models.Requests; +using Microsoft.EntityFrameworkCore; -namespace DD.Persistence.Repository; +namespace DD.Persistence.Database.Postgres.Helpers; /// /// класс с набором методов, необходимых для фильтрации записей @@ -55,4 +54,4 @@ public static class QueryBuilders return result; } -} +} \ No newline at end of file diff --git a/DD.Persistence.Repository/Repositories/ChangeLogRepository.cs b/DD.Persistence.Database.Postgres/Repositories/ChangeLogRepository.cs similarity index 98% rename from DD.Persistence.Repository/Repositories/ChangeLogRepository.cs rename to DD.Persistence.Database.Postgres/Repositories/ChangeLogRepository.cs index 2af06ce..c2502ef 100644 --- a/DD.Persistence.Repository/Repositories/ChangeLogRepository.cs +++ b/DD.Persistence.Database.Postgres/Repositories/ChangeLogRepository.cs @@ -1,4 +1,5 @@ using DD.Persistence.Database.Entity; +using DD.Persistence.Database.Postgres.Helpers; using DD.Persistence.Models; using DD.Persistence.Models.Common; using DD.Persistence.Models.Requests; @@ -7,7 +8,7 @@ using Mapster; using Microsoft.EntityFrameworkCore; using UuidExtensions; -namespace DD.Persistence.Repository.Repositories; +namespace DD.Persistence.Database.Postgres.Repositories; public class ChangeLogRepository : IChangeLogRepository { private readonly DbContext db; diff --git a/DD.Persistence.Repository/Repositories/DataSchemeRepository.cs b/DD.Persistence.Database.Postgres/Repositories/DataSchemeRepository.cs similarity index 94% rename from DD.Persistence.Repository/Repositories/DataSchemeRepository.cs rename to DD.Persistence.Database.Postgres/Repositories/DataSchemeRepository.cs index c30c8da..ba5ccd7 100644 --- a/DD.Persistence.Repository/Repositories/DataSchemeRepository.cs +++ b/DD.Persistence.Database.Postgres/Repositories/DataSchemeRepository.cs @@ -4,7 +4,7 @@ using DD.Persistence.Repositories; using Mapster; using Microsoft.EntityFrameworkCore; -namespace DD.Persistence.Repository.Repositories; +namespace DD.Persistence.Database.Postgres.Repositories; public class DataSchemeRepository : IDataSchemeRepository { protected DbContext db; diff --git a/DD.Persistence.Repository/Repositories/DataSourceSystemRepository.cs b/DD.Persistence.Database.Postgres/Repositories/DataSourceSystemRepository.cs similarity index 94% rename from DD.Persistence.Repository/Repositories/DataSourceSystemRepository.cs rename to DD.Persistence.Database.Postgres/Repositories/DataSourceSystemRepository.cs index d8b6c0a..d9e7fa7 100644 --- a/DD.Persistence.Repository/Repositories/DataSourceSystemRepository.cs +++ b/DD.Persistence.Database.Postgres/Repositories/DataSourceSystemRepository.cs @@ -4,7 +4,7 @@ using DD.Persistence.Repositories; using Mapster; using Microsoft.EntityFrameworkCore; -namespace DD.Persistence.Repository.Repositories; +namespace DD.Persistence.Database.Postgres.Repositories; public class DataSourceSystemRepository : IDataSourceSystemRepository { protected DbContext db; diff --git a/DD.Persistence.Repository/Repositories/ParameterRepository.cs b/DD.Persistence.Database.Postgres/Repositories/ParameterRepository.cs similarity index 98% rename from DD.Persistence.Repository/Repositories/ParameterRepository.cs rename to DD.Persistence.Database.Postgres/Repositories/ParameterRepository.cs index d241de7..c489cd7 100644 --- a/DD.Persistence.Repository/Repositories/ParameterRepository.cs +++ b/DD.Persistence.Database.Postgres/Repositories/ParameterRepository.cs @@ -5,7 +5,7 @@ using DD.Persistence.Models; using DD.Persistence.Repositories; using DD.Persistence.Models.Common; -namespace DD.Persistence.Repository.Repositories; +namespace DD.Persistence.Database.Postgres.Repositories; public class ParameterRepository : IParameterRepository { private DbContext db; diff --git a/DD.Persistence.Repository/Repositories/SetpointRepository.cs b/DD.Persistence.Database.Postgres/Repositories/SetpointRepository.cs similarity index 98% rename from DD.Persistence.Repository/Repositories/SetpointRepository.cs rename to DD.Persistence.Database.Postgres/Repositories/SetpointRepository.cs index 97c6098..3cfd9b1 100644 --- a/DD.Persistence.Repository/Repositories/SetpointRepository.cs +++ b/DD.Persistence.Database.Postgres/Repositories/SetpointRepository.cs @@ -6,7 +6,7 @@ using Mapster; using Microsoft.EntityFrameworkCore; using System.Text.Json; -namespace DD.Persistence.Repository.Repositories +namespace DD.Persistence.Database.Postgres.Repositories { public class SetpointRepository : ISetpointRepository { diff --git a/DD.Persistence.Repository/Repositories/TechMessagesRepository.cs b/DD.Persistence.Database.Postgres/Repositories/TechMessagesRepository.cs similarity index 98% rename from DD.Persistence.Repository/Repositories/TechMessagesRepository.cs rename to DD.Persistence.Database.Postgres/Repositories/TechMessagesRepository.cs index 1a84f25..15d8fe8 100644 --- a/DD.Persistence.Repository/Repositories/TechMessagesRepository.cs +++ b/DD.Persistence.Database.Postgres/Repositories/TechMessagesRepository.cs @@ -7,7 +7,7 @@ using DD.Persistence.Repositories; using Mapster; using Microsoft.EntityFrameworkCore; -namespace DD.Persistence.Repository.Repositories +namespace DD.Persistence.Database.Postgres.Repositories { public class TechMessagesRepository : ITechMessagesRepository { diff --git a/DD.Persistence.Repository/Repositories/TimestampedValuesRepository.cs b/DD.Persistence.Database.Postgres/Repositories/TimestampedValuesRepository.cs similarity index 91% rename from DD.Persistence.Repository/Repositories/TimestampedValuesRepository.cs rename to DD.Persistence.Database.Postgres/Repositories/TimestampedValuesRepository.cs index 2005a5a..149e411 100644 --- a/DD.Persistence.Repository/Repositories/TimestampedValuesRepository.cs +++ b/DD.Persistence.Database.Postgres/Repositories/TimestampedValuesRepository.cs @@ -4,7 +4,7 @@ using DD.Persistence.Models.Common; using DD.Persistence.Repositories; using Microsoft.EntityFrameworkCore; -namespace DD.Persistence.Repository.Repositories; +namespace DD.Persistence.Database.Postgres.Repositories; public class TimestampedValuesRepository : ITimestampedValuesRepository { private readonly DbContext db; @@ -14,7 +14,8 @@ public class TimestampedValuesRepository : ITimestampedValuesRepository this.db = db; } - protected virtual IQueryable GetQueryReadOnly() => this.db.Set(); + protected virtual IQueryable GetQueryReadOnly() => this.db.Set() + .Include(e => e.DataScheme); public async virtual Task AddRange(Guid discriminatorId, IEnumerable dtos, CancellationToken token) { @@ -54,6 +55,15 @@ public class TimestampedValuesRepository : ITimestampedValuesRepository .Select(g => KeyValuePair.Create(g.Key, g.OrderBy(i => i.Timestamp).Skip(skip).Take(take))); var entities = await groupQuery.ToArrayAsync(token); + //var root = new TVertex( + // OperationEnum.And, + // new TLeaf(OperationEnum.Equal, "A", 1), + // new TLeaf(OperationEnum.Equal, "B", 1) + //); + //var dataScheme = entities.First().Value.First().DataScheme; + //var specification = dataScheme.BuildFilter(root); + //var que = ApplySpecification(specification); + var result = entities.ToDictionary(k => k.Key, v => v.Value.Select(e => ( e.Timestamp, e.Values diff --git a/DD.Persistence.Repository/RepositoriesCached/DataSchemeCachedRepository.cs b/DD.Persistence.Database.Postgres/RepositoriesCached/DataSchemeCachedRepository.cs similarity index 88% rename from DD.Persistence.Repository/RepositoriesCached/DataSchemeCachedRepository.cs rename to DD.Persistence.Database.Postgres/RepositoriesCached/DataSchemeCachedRepository.cs index ea22196..f4cec62 100644 --- a/DD.Persistence.Repository/RepositoriesCached/DataSchemeCachedRepository.cs +++ b/DD.Persistence.Database.Postgres/RepositoriesCached/DataSchemeCachedRepository.cs @@ -1,9 +1,9 @@ using DD.Persistence.Models; -using DD.Persistence.Repository.Repositories; +using DD.Persistence.Database.Postgres.Repositories; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; -namespace DD.Persistence.Repository.RepositoriesCached; +namespace DD.Persistence.Database.Postgres.RepositoriesCached; public class DataSchemeCachedRepository : DataSchemeRepository { private readonly IMemoryCache memoryCache; diff --git a/DD.Persistence.Repository/RepositoriesCached/DataSourceSystemCachedRepository.cs b/DD.Persistence.Database.Postgres/RepositoriesCached/DataSourceSystemCachedRepository.cs similarity index 91% rename from DD.Persistence.Repository/RepositoriesCached/DataSourceSystemCachedRepository.cs rename to DD.Persistence.Database.Postgres/RepositoriesCached/DataSourceSystemCachedRepository.cs index 87e487e..919c3ba 100644 --- a/DD.Persistence.Repository/RepositoriesCached/DataSourceSystemCachedRepository.cs +++ b/DD.Persistence.Database.Postgres/RepositoriesCached/DataSourceSystemCachedRepository.cs @@ -1,10 +1,10 @@ using DD.Persistence.Database.Entity; using DD.Persistence.Models; -using DD.Persistence.Repository.Repositories; +using DD.Persistence.Database.Postgres.Repositories; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; -namespace DD.Persistence.Repository.RepositoriesCached; +namespace DD.Persistence.Database.Postgres.RepositoriesCached; public class DataSourceSystemCachedRepository : DataSourceSystemRepository { private static readonly string SystemCacheKey = $"{typeof(DataSourceSystem).FullName}CacheKey"; diff --git a/DD.Persistence.Repository/RepositoriesCached/TimestampedValuesCachedRepository.cs b/DD.Persistence.Database.Postgres/RepositoriesCached/TimestampedValuesCachedRepository.cs similarity index 98% rename from DD.Persistence.Repository/RepositoriesCached/TimestampedValuesCachedRepository.cs rename to DD.Persistence.Database.Postgres/RepositoriesCached/TimestampedValuesCachedRepository.cs index f81f7a0..2073126 100644 --- a/DD.Persistence.Repository/RepositoriesCached/TimestampedValuesCachedRepository.cs +++ b/DD.Persistence.Database.Postgres/RepositoriesCached/TimestampedValuesCachedRepository.cs @@ -3,7 +3,7 @@ //using DD.Persistence.Repositories; //using Microsoft.EntityFrameworkCore; -//namespace DD.Persistence.Repository.Repositories; +//namespace DD.Persistence.Database.Postgres.Repositories; //public class TimestampedValuesCachedRepository : TimestampedValuesRepository //{ diff --git a/DD.Persistence.Repository.Test/DD.Persistence.Repository.Test.csproj b/DD.Persistence.Repository.Test/DD.Persistence.Repository.Test.csproj index 4f29d86..63b4134 100644 --- a/DD.Persistence.Repository.Test/DD.Persistence.Repository.Test.csproj +++ b/DD.Persistence.Repository.Test/DD.Persistence.Repository.Test.csproj @@ -20,7 +20,6 @@ - diff --git a/DD.Persistence.Repository.Test/SetpointRepositoryShould.cs b/DD.Persistence.Repository.Test/SetpointRepositoryShould.cs index 6b05ff3..44c518a 100644 --- a/DD.Persistence.Repository.Test/SetpointRepositoryShould.cs +++ b/DD.Persistence.Repository.Test/SetpointRepositoryShould.cs @@ -1,12 +1,7 @@ using DD.Persistence.Database.Model; -using DD.Persistence.Repository.Repositories; +using DD.Persistence.Database.Postgres.Repositories; using Shouldly; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Text.Json; -using System.Threading.Tasks; namespace DD.Persistence.Repository.Test; public class SetpointRepositoryShould : IClassFixture diff --git a/DD.Persistence.Repository/DD.Persistence.Repository.csproj b/DD.Persistence.Repository/DD.Persistence.Repository.csproj deleted file mode 100644 index 75803db..0000000 --- a/DD.Persistence.Repository/DD.Persistence.Repository.csproj +++ /dev/null @@ -1,19 +0,0 @@ - - - - net9.0 - enable - enable - - - - - - - - - - - - - diff --git a/DD.Persistence.Repository/DependencyInjection.cs b/DD.Persistence.Repository/DependencyInjection.cs deleted file mode 100644 index a6ae2af..0000000 --- a/DD.Persistence.Repository/DependencyInjection.cs +++ /dev/null @@ -1,45 +0,0 @@ -using DD.Persistence.Database.Entity; -using DD.Persistence.Models; -using DD.Persistence.Repositories; -using DD.Persistence.Repository.Repositories; -using DD.Persistence.Repository.RepositoriesCached; -using Mapster; -using Microsoft.Extensions.DependencyInjection; -using System.Reflection; - -namespace DD.Persistence.Repository; -public static class DependencyInjection -{ - public static void MapsterSetup() - { - TypeAdapterConfig.GlobalSettings.Default.Config - .ForType() - .Ignore(dest => dest.System, dest => dest.SystemId); - - TypeAdapterConfig.NewConfig() - .Map(dest => dest.Value, src => new ChangeLogValuesDto() - { - Value = src.Value, - Id = src.Id - }); - } - - public static IServiceCollection AddInfrastructure(this IServiceCollection services) - { - var typeAdapterConfig = TypeAdapterConfig.GlobalSettings; - typeAdapterConfig.RuleMap.Clear(); - typeAdapterConfig.Scan(Assembly.GetExecutingAssembly()); - - MapsterSetup(); - - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - services.AddTransient(); - - return services; - } -} diff --git a/DD.Persistence.sln b/DD.Persistence.sln index ca91e47..e42f411 100644 --- a/DD.Persistence.sln +++ b/DD.Persistence.sln @@ -7,8 +7,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DD.Persistence", "DD.Persis EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DD.Persistence.API", "DD.Persistence.API\DD.Persistence.API.csproj", "{8650A227-929E-45F0-AEF7-2C91F45FE884}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DD.Persistence.Repository", "DD.Persistence.Repository\DD.Persistence.Repository.csproj", "{493D6D92-231B-4CB6-831B-BE13884B0DE4}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DD.Persistence.Database", "DD.Persistence.Database\DD.Persistence.Database.csproj", "{F77475D1-D074-407A-9D69-2FADDDAE2056}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DD.Persistence.IntegrationTests", "DD.Persistence.IntegrationTests\DD.Persistence.IntegrationTests.csproj", "{10752C25-3773-4081-A1F2-215A1D950126}" @@ -51,10 +49,6 @@ Global {8650A227-929E-45F0-AEF7-2C91F45FE884}.Debug|Any CPU.Build.0 = Debug|Any CPU {8650A227-929E-45F0-AEF7-2C91F45FE884}.Release|Any CPU.ActiveCfg = Release|Any CPU {8650A227-929E-45F0-AEF7-2C91F45FE884}.Release|Any CPU.Build.0 = Release|Any CPU - {493D6D92-231B-4CB6-831B-BE13884B0DE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {493D6D92-231B-4CB6-831B-BE13884B0DE4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {493D6D92-231B-4CB6-831B-BE13884B0DE4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {493D6D92-231B-4CB6-831B-BE13884B0DE4}.Release|Any CPU.Build.0 = Release|Any CPU {F77475D1-D074-407A-9D69-2FADDDAE2056}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {F77475D1-D074-407A-9D69-2FADDDAE2056}.Debug|Any CPU.Build.0 = Debug|Any CPU {F77475D1-D074-407A-9D69-2FADDDAE2056}.Release|Any CPU.ActiveCfg = Release|Any CPU