diff --git a/Configurations/XTestConfiguration.cs b/Configurations/XTestConfiguration.cs deleted file mode 100644 index bda491e..0000000 --- a/Configurations/XTestConfiguration.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; -using xServices.Models.Entities; - -namespace xServices.Configurations -{ - public class XTestConfiguration : IEntityTypeConfiguration - { - public void Configure(EntityTypeBuilder builder) - { } - } -} \ No newline at end of file diff --git a/Configurations/XTestTypeConfiguration.cs b/Configurations/XTestTypeConfiguration.cs new file mode 100644 index 0000000..6c12af7 --- /dev/null +++ b/Configurations/XTestTypeConfiguration.cs @@ -0,0 +1,13 @@ +using System; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using xDataService.Providers; +using xServices.Models.Entities; + +namespace xServices.Configurations +{ + public class XTestTypeConfiguration : XBaseEntityTypeConfiguration + { + public override void Configure(EntityTypeBuilder builder) + { } + } +} \ No newline at end of file diff --git a/DI/XDIHelperExtension.cs b/DI/XDIHelperExtension.cs index 0cc6393..e7864dd 100644 --- a/DI/XDIHelperExtension.cs +++ b/DI/XDIHelperExtension.cs @@ -1,10 +1,16 @@ +using System.Collections.Generic; +using System.Linq; using Microsoft.AspNetCore.Builder; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using xCommons.Extensions; +using xDataService.DI; +using xDataService.Models; using xMessageService.DI; using xServices.Configurations; using xServices.Constants; +using xServices.Interfaces; +using xServices.Providers; using xStorageService.DI; namespace xServices.DI @@ -48,7 +54,7 @@ namespace xServices.DI } // - services.AddSingleton(config); + services.AddSingleton(config); } /// @@ -68,18 +74,21 @@ namespace xServices.DI } // - services.AddSingleton(configuration); + services.AddSingleton(configuration); } /// /// Register Services ... /// /// + /// + /// /// public static void AddXServices( this IServiceCollection services, IConfiguration configuration, - ServiceLifetime lifeTime = ServiceLifetime.Transient + IEnumerable databases = null, + ServiceLifetime lifeTime = ServiceLifetime.Scoped ) { // @@ -90,6 +99,7 @@ namespace xServices.DI config: config, services: services, lifeTime: lifeTime, + databases: databases, configuration: configuration ); } @@ -99,12 +109,15 @@ namespace xServices.DI /// /// /// + /// + /// /// public static void AddXServices( this IServiceCollection services, IConfiguration configuration, XServicesConfiguration config, - ServiceLifetime lifeTime = ServiceLifetime.Transient + IEnumerable databases = null, + ServiceLifetime lifeTime = ServiceLifetime.Scoped ) { // @@ -112,6 +125,7 @@ namespace xServices.DI config: config, services: services, lifeTime: lifeTime, + databases: databases, configuration: configuration ); } @@ -120,11 +134,35 @@ namespace xServices.DI /// Use All Required Middlewares ... /// /// - public static void UseXServices(this IApplicationBuilder app) + /// + /// + public static void UseXServices( + this IApplicationBuilder app, + IEnumerable databases = null, + bool isDevelopmentEnvironment = false + ) { // // Use Storage Service ... app.UseXStorageService(); + + // + #region Use Data Data Service ... + if (databases.HasChild()) + { + // + databases + .ToList() + .ForEach(database => + { + // + app.UseXDatabase( + descriptor: database, + isDevelopmentEnvironment: isDevelopmentEnvironment + ); + }); + } + #endregion } // @@ -134,11 +172,14 @@ namespace xServices.DI /// /// /// + /// + /// /// private static void AddServices( this IServiceCollection services, IConfiguration configuration, XServicesConfiguration config = null, + IEnumerable databases = null, ServiceLifetime lifeTime = ServiceLifetime.Transient ) { @@ -156,6 +197,31 @@ namespace xServices.DI // // Message Service ... services.AddXMessageService(config: configuration); + + // + #region Register Data Service ... + // + if (databases.HasChild()) + { + // + databases + .ToList() + .ForEach(database => + { + // + // Register DataBase ... + services.AddXDatabase( + lifetime: lifeTime, + descriptor: database, + configuration: configuration + ); + }); + } + + // + // Register Repository Services ... + services.AddScoped(); + #endregion } #endregion } diff --git a/Interfaces/IXTestRepositoryService.cs b/Interfaces/IXTestRepositoryService.cs new file mode 100644 index 0000000..887c6b1 --- /dev/null +++ b/Interfaces/IXTestRepositoryService.cs @@ -0,0 +1,10 @@ +using System; +using xDataService.Interfaces; +using xServices.Models.Dtos; +using xServices.Models.Entities; + +namespace xServices.Interfaces +{ + public interface IXTestRepositoryService : IXBaseRepositoryService + { } +} \ No newline at end of file diff --git a/Models/Dtos/XTestDto.cs b/Models/Dtos/XTestDto.cs index cf15f7e..a6a933f 100644 --- a/Models/Dtos/XTestDto.cs +++ b/Models/Dtos/XTestDto.cs @@ -3,9 +3,9 @@ using xModels.Base; namespace xServices.Models.Dtos { - public class XTestDto :XBaseEntityDto + public class XTestDto : XBaseEntityDto { public string Firstname { get; set; } - public string Lastname { get; set; } + public string Lastname { get; set; } } } \ No newline at end of file diff --git a/Providers/XTestEFRepository.cs b/Providers/XTestEFRepository.cs index 601acf0..476bdaf 100644 --- a/Providers/XTestEFRepository.cs +++ b/Providers/XTestEFRepository.cs @@ -1,6 +1,6 @@ using System; using xDataService.Configuration; -using xDataService.EFRepositories; +using xDataService.Providers; using xDataService.Interfaces; using xServices.Databases; using xServices.Interfaces; diff --git a/Providers/XTestGraphQLTypeHelper.cs b/Providers/XTestGraphQLTypeHelper.cs index 2235d93..2c2fa50 100644 --- a/Providers/XTestGraphQLTypeHelper.cs +++ b/Providers/XTestGraphQLTypeHelper.cs @@ -8,7 +8,6 @@ namespace xServices.Providers { public class XTestGraphQLTypeHelper : XBaseGraphQLTypeHelper, IXTestGraphQLTypeHelper { - public XTestGraphQLTypeHelper( XDataServiceConfiguration configuration ) : base(configuration) diff --git a/Providers/XTestInMemoryRepository.cs b/Providers/XTestInMemoryRepository.cs new file mode 100644 index 0000000..92531bb --- /dev/null +++ b/Providers/XTestInMemoryRepository.cs @@ -0,0 +1,22 @@ +using System; +using xDataService.Configuration; +using xDataService.Providers; +using xServices.Interfaces; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public class XTestInMemoryRepository : XBaseInMemoryRepository + { + public XTestInMemoryRepository( + XDataServiceConfiguration configuration, + IXTestKeyGenerator keyGenerator = null, + IXTestRepositoryEvents baseRepositoryEvents = null + ) : base( + configuration, + keyGenerator, + baseRepositoryEvents + ) + { } + } +} \ No newline at end of file diff --git a/Providers/XTestMongoRepository.cs b/Providers/XTestMongoRepository.cs new file mode 100644 index 0000000..f757dca --- /dev/null +++ b/Providers/XTestMongoRepository.cs @@ -0,0 +1,26 @@ +using System; +using xDataService.Configuration; +using xDataService.Providers; +using xServices.Interfaces; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public class XTestMongoRepository : XBaseMongoRepository + { + public XTestMongoRepository( + XDataBaseConfiguration dbConfiguration, + XDataServiceConfiguration configuration, + string collectionName = null, + IXTestKeyGenerator keyGenerator = null, + IXTestRepositoryEvents baseRepositoryEvents = null + ) : base( + dbConfiguration, + configuration, + collectionName, + keyGenerator, + baseRepositoryEvents + ) + { } + } +} \ No newline at end of file diff --git a/Providers/XTestRepositoryController.cs b/Providers/XTestRepositoryController.cs new file mode 100644 index 0000000..060664f --- /dev/null +++ b/Providers/XTestRepositoryController.cs @@ -0,0 +1,33 @@ +using System; +using System.Linq; +using Microsoft.EntityFrameworkCore.Query; +using Microsoft.Extensions.Logging; +using xCommons.Configurations; +using xCommons.Providers; +using xDataService.Controllers; +using xDataService.Interfaces; +using xServices.Interfaces; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public partial class XTestRepositoryController : XBaseRepositoryController, IXBaseRepositoryController + { + public XTestRepositoryController( + ILogger logger, + XAppConfiguration appConfiguration, + XValidationProvider validationProvider, + IXTestRepository repository, + Func, IOrderedQueryable> defaultOrderBuilder = null, + Func, IIncludableQueryable> defaultIncludeBuilder = null + ) : base( + logger, + appConfiguration, + validationProvider, + repository, + defaultOrderBuilder, + defaultIncludeBuilder + ) + { } + } +} \ No newline at end of file diff --git a/Providers/XTestRepositoryEvents.cs b/Providers/XTestRepositoryEvents.cs index 0718144..30aa3a4 100644 --- a/Providers/XTestRepositoryEvents.cs +++ b/Providers/XTestRepositoryEvents.cs @@ -1,4 +1,4 @@ -using xDataService.Events; +using xDataService.Providers; using xServices.Interfaces; using xServices.Models.Entities; diff --git a/Providers/XTestRepositoryService.cs b/Providers/XTestRepositoryService.cs new file mode 100644 index 0000000..2e5d8b1 --- /dev/null +++ b/Providers/XTestRepositoryService.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using AutoMapper; +using xDataService.Providers; +using xServices.Interfaces; +using xServices.Models.Dtos; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public class XTestRepositoryService : XBaseRepositoryService, IXTestRepositoryService + { + public XTestRepositoryService( + IXTestRepository repository, + IEnumerable mapperProfiles = null + ) : base(repository, mapperProfiles) + { } + } +} \ No newline at end of file diff --git a/Providers/XTestServiceController.cs b/Providers/XTestServiceController.cs new file mode 100644 index 0000000..a0cdf76 --- /dev/null +++ b/Providers/XTestServiceController.cs @@ -0,0 +1,34 @@ +using System; +using System.Linq; +using Microsoft.EntityFrameworkCore.Query; +using Microsoft.Extensions.Logging; +using xCommons.Configurations; +using xCommons.Providers; +using xDataService.Controllers; +using xDataService.Interfaces; +using xServices.Interfaces; +using xServices.Models.Dtos; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public class XTestServiceController : XBaseServiceController, IXBaseServiceController + { + public XTestServiceController( + ILogger logger, + XAppConfiguration appConfiguration, + XValidationProvider validationProvider, + IXTestRepositoryService repositoryService, + Func, IOrderedQueryable> defaultOrderBuilder = null, + Func, IIncludableQueryable> defaultIncludeBuilder = null + ) : base( + logger, + appConfiguration, + validationProvider, + repositoryService, + defaultOrderBuilder, + defaultIncludeBuilder + ) + { } + } +} \ No newline at end of file