diff --git a/Providers/XTestRepositoryController.cs b/Controllers/XTestRepositoryController.cs similarity index 97% rename from Providers/XTestRepositoryController.cs rename to Controllers/XTestRepositoryController.cs index 060664f..9bf4dca 100644 --- a/Providers/XTestRepositoryController.cs +++ b/Controllers/XTestRepositoryController.cs @@ -9,7 +9,7 @@ using xDataService.Interfaces; using xServices.Interfaces; using xServices.Models.Entities; -namespace xServices.Providers +namespace xServices.Controllers { public partial class XTestRepositoryController : XBaseRepositoryController, IXBaseRepositoryController { diff --git a/Providers/XTestServiceController.cs b/Controllers/XTestServiceController.cs similarity index 97% rename from Providers/XTestServiceController.cs rename to Controllers/XTestServiceController.cs index a0cdf76..c77e355 100644 --- a/Providers/XTestServiceController.cs +++ b/Controllers/XTestServiceController.cs @@ -10,7 +10,7 @@ using xServices.Interfaces; using xServices.Models.Dtos; using xServices.Models.Entities; -namespace xServices.Providers +namespace xServices.Controllers { public class XTestServiceController : XBaseServiceController, IXBaseServiceController { diff --git a/DI/XDIHelperExtension.cs b/DI/XDIHelperExtension.cs index e7864dd..1616b9e 100644 --- a/DI/XDIHelperExtension.cs +++ b/DI/XDIHelperExtension.cs @@ -6,7 +6,10 @@ using Microsoft.Extensions.DependencyInjection; using xCommons.Extensions; using xDataService.DI; using xDataService.Models; +using xIdentityService.DI; using xMessageService.DI; +using xPushService.DI; +using xPushService.Helpers; using xServices.Configurations; using xServices.Constants; using xServices.Interfaces; @@ -163,6 +166,19 @@ namespace xServices.DI }); } #endregion + + // + #region Use Hubs ... + // + var pushHelper = new XPushServiceHelper(); + + // + pushHelper.AddHub("testDto"); + pushHelper.AddHub("testEntity"); + + // + app.UseXPushService(pushHelper); + #endregion } // @@ -180,7 +196,7 @@ namespace xServices.DI IConfiguration configuration, XServicesConfiguration config = null, IEnumerable databases = null, - ServiceLifetime lifeTime = ServiceLifetime.Transient + ServiceLifetime lifeTime = ServiceLifetime.Scoped ) { // @@ -198,6 +214,14 @@ namespace xServices.DI // Message Service ... services.AddXMessageService(config: configuration); + // + #region Register Identity Service ... + // services.AddXIdentityService( + // configuration: configuration, + // lifeTime: ServiceLifetime.Scoped + // ); + #endregion + // #region Register Data Service ... // @@ -222,6 +246,24 @@ namespace xServices.DI // Register Repository Services ... services.AddScoped(); #endregion + + // + #region Register Push Service ... + // + // Push Service ... + services.AddXPushService( + config: configuration, + lifeTime: ServiceLifetime.Scoped + ); + + // + // Register Provider Services ... + // since Hubs required Identity Provider, you Have to Register IdentityService as Requirements ... + // a Provider Service, Provides Repository (Entity) or Service (Dto) based + // Data Manipulation Actions by Supporting Hub Contexts Events ... + services.AddScoped(); + services.AddScoped(); + #endregion } #endregion } diff --git a/Databases/XApiDatabaseDescriptor.cs b/Databases/XApiDatabaseDescriptor.cs index 4faec9d..188289e 100644 --- a/Databases/XApiDatabaseDescriptor.cs +++ b/Databases/XApiDatabaseDescriptor.cs @@ -5,6 +5,7 @@ using xDataService.Interfaces; using xDataService.Models; using xServices.Interfaces; using xServices.Models.Entities; +using xServices.Models.GraphQL; using xServices.Providers; namespace xServices.Databases diff --git a/Interfaces/IXTestDtoHub.cs b/Interfaces/IXTestDtoHub.cs new file mode 100644 index 0000000..8be7af9 --- /dev/null +++ b/Interfaces/IXTestDtoHub.cs @@ -0,0 +1,10 @@ +using System; +using xPushService.Interfaces; +using xServices.Models.Dtos; +using xServices.Models.Entities; + +namespace xServices.Interfaces +{ + public interface IXTestDtoHub : IXBaseDtoHub + { } +} \ No newline at end of file diff --git a/Interfaces/IXTestEntityHub.cs b/Interfaces/IXTestEntityHub.cs new file mode 100644 index 0000000..e209384 --- /dev/null +++ b/Interfaces/IXTestEntityHub.cs @@ -0,0 +1,9 @@ +using System; +using xPushService.Interfaces; +using xServices.Models.Entities; + +namespace xServices.Interfaces +{ + public interface IXTestEntityHub : IXBaseEntityHub + { } +} \ No newline at end of file diff --git a/Interfaces/IXTestGraphQuery.cs b/Interfaces/IXTestGraphQuery.cs index 5ca0a66..528f26e 100644 --- a/Interfaces/IXTestGraphQuery.cs +++ b/Interfaces/IXTestGraphQuery.cs @@ -2,7 +2,7 @@ using System; using GraphQL.Types; using xDataService.Interfaces; using xServices.Models.Entities; -using xServices.Providers; +using xServices.Models.GraphQL; namespace xServices.Interfaces { diff --git a/Interfaces/IXTestRepositoryProvider.cs b/Interfaces/IXTestRepositoryProvider.cs new file mode 100644 index 0000000..d4fcc2a --- /dev/null +++ b/Interfaces/IXTestRepositoryProvider.cs @@ -0,0 +1,10 @@ +using System; +using xPushService.Interfaces; +using xServices.Models.Entities; +using xServices.Providers; + +namespace xServices.Interfaces +{ + public interface IXTestRepositoryProvider : IXBaseEntityProviderr + { } +} \ No newline at end of file diff --git a/Interfaces/IXTestServiceProvider.cs b/Interfaces/IXTestServiceProvider.cs new file mode 100644 index 0000000..0b54023 --- /dev/null +++ b/Interfaces/IXTestServiceProvider.cs @@ -0,0 +1,11 @@ +using System; +using xPushService.Interfaces; +using xServices.Models.Dtos; +using xServices.Models.Entities; +using xServices.Providers; + +namespace xServices.Interfaces +{ + public interface IXTestServiceProvider : IXBaseDtoProvider + { } +} \ No newline at end of file diff --git a/Providers/XTestGraphType.cs b/Models/GraphQL/XTestGraphType.cs similarity index 89% rename from Providers/XTestGraphType.cs rename to Models/GraphQL/XTestGraphType.cs index 9a33529..695cc09 100644 --- a/Providers/XTestGraphType.cs +++ b/Models/GraphQL/XTestGraphType.cs @@ -2,7 +2,7 @@ using System; using xDataService.GraphQL; using xServices.Models.Entities; -namespace xServices.Providers +namespace xServices.Models.GraphQL { public class XTestGraphType : XBaseGraphObjectType { diff --git a/Providers/XTestDtoHub.cs b/Providers/XTestDtoHub.cs new file mode 100644 index 0000000..acf78fc --- /dev/null +++ b/Providers/XTestDtoHub.cs @@ -0,0 +1,15 @@ +using System; +using Microsoft.Extensions.Logging; +using xPushService.Base; +using xServices.Interfaces; +using xServices.Models.Dtos; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public class XTestDtoHub : XBaseDtoHub, IXTestDtoHub + { + public XTestDtoHub(ILogger logger) : base(logger) + { } + } +} \ No newline at end of file diff --git a/Providers/XTestEntityHub.cs b/Providers/XTestEntityHub.cs new file mode 100644 index 0000000..1fc1226 --- /dev/null +++ b/Providers/XTestEntityHub.cs @@ -0,0 +1,14 @@ +using System; +using Microsoft.Extensions.Logging; +using xPushService.Base; +using xServices.Interfaces; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public class XTestEntityHub : XBaseEntityHub, IXTestEntityHub + { + public XTestEntityHub(ILogger logger) : base(logger) + { } + } +} \ No newline at end of file diff --git a/Providers/XTestGraphQuery.cs b/Providers/XTestGraphQuery.cs index 68779a8..d31e2f9 100644 --- a/Providers/XTestGraphQuery.cs +++ b/Providers/XTestGraphQuery.cs @@ -4,6 +4,7 @@ using xDataService.Configuration; using xDataService.GraphQL; using xServices.Interfaces; using xServices.Models.Entities; +using xServices.Models.GraphQL; namespace xServices.Providers { diff --git a/Providers/XTestRepositoryProvider.cs b/Providers/XTestRepositoryProvider.cs new file mode 100644 index 0000000..fbda2d8 --- /dev/null +++ b/Providers/XTestRepositoryProvider.cs @@ -0,0 +1,26 @@ +using System; +using Microsoft.AspNetCore.SignalR; +using xDataService.Configuration; +using xIdentityService.Interfaces; +using xPushService.Base; +using xServices.Interfaces; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public class XTestRepositoryProvider : XBaseEntityProvider, IXTestRepositoryProvider + { + public XTestRepositoryProvider( + IXTestRepository repository, + IHubContext hub, + XDataServiceConfiguration dataConfiguration, + IXIdentityProvider identityProvider = null + ) : base( + hub: hub, + repository: repository, + identityProvider: identityProvider, + dataConfiguration: dataConfiguration + ) + { } + } +} \ No newline at end of file diff --git a/Providers/XTestServiceProvider.cs b/Providers/XTestServiceProvider.cs new file mode 100644 index 0000000..9f56f70 --- /dev/null +++ b/Providers/XTestServiceProvider.cs @@ -0,0 +1,27 @@ +using System; +using Microsoft.AspNetCore.SignalR; +using xDataService.Configuration; +using xIdentityService.Interfaces; +using xPushService.Base; +using xServices.Interfaces; +using xServices.Models.Dtos; +using xServices.Models.Entities; + +namespace xServices.Providers +{ + public class XTestServiceProvider : XBaseDtoProvider, IXTestServiceProvider + { + public XTestServiceProvider( + IHubContext hub, + IXTestRepositoryService service, + XDataServiceConfiguration dataConfiguration, + IXIdentityProvider identityProvider = null + ) : base( + hub: hub, + service: service, + identityProvider: identityProvider, + dataConfiguration: dataConfiguration + ) + { } + } +} \ No newline at end of file diff --git a/xServices.csproj b/xServices.csproj index e914d4f..20817f3 100644 --- a/xServices.csproj +++ b/xServices.csproj @@ -30,6 +30,7 @@ +