diff --git a/Startup.cs b/Startup.cs index 241cc14..5f214b8 100644 --- a/Startup.cs +++ b/Startup.cs @@ -15,18 +15,19 @@ using Newtonsoft.Json.Serialization; using xApi.Extensions; using xCommons.Configurations; using xCommons.Extensions; -using xDataHelper; -using xDataHelper.DbSeeder; -using xDataHelper.Helpers; +// using xDataHelper; +// using xDataHelper.DbSeeder; +// using xDataHelper.Helpers; using xDataService.Configuration; using xDataService.Constants; using xDataService.DI; using xDataService.Interfaces; using xHttpService.DI; using xIdentityService.DI; -using xPushHelper.DI; +// using xPushHelper.DI; using xPushService.DI; using xPushService.Helpers; +using xServices.Databases; using xServices.DI; namespace xApi @@ -110,97 +111,109 @@ namespace xApi }); // - // Register XPushService ... - services.AddXPushService(Configuration); - services.AddXPushHubProvider(lifeTime); + // Check Data Service ... + var dataServiceConfig = Configuration.GetXDataServiceConfiguration(); // - // Register XIdentityService ... - services.AddXIdentityService(Configuration, lifeTime); - - // - // Register DataService here ... - #region Register xDataService ... - // - // Register IXDataServiceHelper ... - services.AddSingleton(); - - // - // Prepare Db Options Builder based on Provider ... - var providerType = Configuration.GetXDbProviderType(); - switch (providerType) - { - // - case XDbProviders.MySQL: - case XDbProviders.SQLite: - case XDbProviders.SQLServer: - Action optionsBuilder = optionsBuilder = b => - { - b.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name); - }; - - // - // Register xDataService on DI ... - services.AddXDataService( - Configuration, - lifeTime, - XDbProviderConfigurations.DEFAULT_CONNECTION_NAME, - optionsBuilder - ); - break; - - // - case XDbProviders.MongoDB: - // - // Register xDataService on DI ... - services.AddXDataService( - Configuration, - lifeTime, - XDbProviderConfigurations.DEFAULT_CONNECTION_NAME - ); - break; - } - #endregion - - // - // Register GraphQL here ... - #region Register xGraphQL ... - // - services.Configure(options => - { - options.AllowSynchronousIO = true; - }); - - // - services.Configure(options => - { - options.AllowSynchronousIO = true; - }); - - // - // Register XGraphQL Helper ... - services.AddSingleton(); - - // - services.AddXGraphQL(options => - { - // - options.EnableMetrics = true; - options.UnhandledExceptionDelegate = context => - { - Console.WriteLine("XGraphQL Error: " + context.OriginalException.Message); - }; - }); - #endregion - - // - // Register Services Module Providers here ... - #region Register xServices ... - services.AddXServices( - lifeTime: lifeTime, - configuration: Configuration + // Check DataBase Registration ... + services.AddXDatabase( + configuration: Configuration, + descriptor: new XApiDatabaseDescriptor(), + lifetime: ServiceLifetime.Scoped ); - #endregion + + // // + // // Register XPushService ... + // services.AddXPushService(Configuration); + // services.AddXPushHubProvider(lifeTime); + + // // + // // Register XIdentityService ... + // services.AddXIdentityService(Configuration, lifeTime); + + // // + // // Register DataService here ... + // #region Register xDataService ... + // // + // // Register IXDataServiceHelper ... + // services.AddSingleton(); + + // // + // // Prepare Db Options Builder based on Provider ... + // var providerType = Configuration.GetXDbProviderType(); + // switch (providerType) + // { + // // + // case XDbProviders.MySQL: + // case XDbProviders.SQLite: + // case XDbProviders.SQLServer: + // Action optionsBuilder = optionsBuilder = b => + // { + // b.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name); + // }; + + // // + // // Register xDataService on DI ... + // services.AddXDataService( + // Configuration, + // lifeTime, + // XDbProviderConfigurations.DEFAULT_CONNECTION_NAME, + // optionsBuilder + // ); + // break; + + // // + // case XDbProviders.MongoDB: + // // + // // Register xDataService on DI ... + // services.AddXDataService( + // Configuration, + // lifeTime, + // XDbProviderConfigurations.DEFAULT_CONNECTION_NAME + // ); + // break; + // } + // #endregion + + // // + // // Register GraphQL here ... + // #region Register xGraphQL ... + // // + // services.Configure(options => + // { + // options.AllowSynchronousIO = true; + // }); + + // // + // services.Configure(options => + // { + // options.AllowSynchronousIO = true; + // }); + + // // + // // Register XGraphQL Helper ... + // services.AddSingleton(); + + // // + // services.AddXGraphQL(options => + // { + // // + // options.EnableMetrics = true; + // options.UnhandledExceptionDelegate = context => + // { + // Console.WriteLine("XGraphQL Error: " + context.OriginalException.Message); + // }; + // }); + // #endregion + + // // + // // Register Services Module Providers here ... + // #region Register xServices ... + // services.AddXServices( + // lifeTime: lifeTime, + // configuration: Configuration + // ); + // #endregion } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) @@ -243,24 +256,24 @@ namespace xApi // #region XPushService ... - // - var helper = new XPushServiceHelper(); + // // + // var helper = new XPushServiceHelper(); - // - app.UseXPushService(helper); + // // + // app.UseXPushService(helper); #endregion // // Use xDataService Middleware ... - app.UseXDataService(); + // app.UseXDataService(); // // Using Services ... - app.UseXServices(); + // app.UseXServices(); // // Use xGraphQL Middleware ... - app.UseXGraphQL(withPlayground: withPlayground); + // app.UseXGraphQL(withPlayground: withPlayground); } } } \ No newline at end of file diff --git a/appsettings.json b/appsettings.json index a46f4a6..b1e3be7 100644 --- a/appsettings.json +++ b/appsettings.json @@ -18,10 +18,6 @@ "Url": "https://www.saherelm.ir" } }, - "XDbProvider": "SQLITE", - "ConnectionStrings": { - "DataConnection": "Filename=./Db/XApi.db" - }, "MessageConfiguration": { "MailConfigurations": { "gmail": { @@ -55,6 +51,12 @@ "NewDeviceLoggedIn": "new_device_logged_in_msg" }, "DataServiceConfiguration": { + "Databases": { + "xApiDb": { + "Provider": "SQLITE", + "ConnectionString": "Filename=./Db/XApi.db" + } + }, "EnableTracking": true, "EnableSoftDelete": false, "EnableDetailedErrors": false,