This commit is contained in:
2026-05-08 04:30:16 +03:30
parent c6ccc3a7b6
commit 4fa7aac8c2
2 changed files with 118 additions and 103 deletions
+112 -99
View File
@@ -15,18 +15,19 @@ using Newtonsoft.Json.Serialization;
using xApi.Extensions; using xApi.Extensions;
using xCommons.Configurations; using xCommons.Configurations;
using xCommons.Extensions; using xCommons.Extensions;
using xDataHelper; // using xDataHelper;
using xDataHelper.DbSeeder; // using xDataHelper.DbSeeder;
using xDataHelper.Helpers; // using xDataHelper.Helpers;
using xDataService.Configuration; using xDataService.Configuration;
using xDataService.Constants; using xDataService.Constants;
using xDataService.DI; using xDataService.DI;
using xDataService.Interfaces; using xDataService.Interfaces;
using xHttpService.DI; using xHttpService.DI;
using xIdentityService.DI; using xIdentityService.DI;
using xPushHelper.DI; // using xPushHelper.DI;
using xPushService.DI; using xPushService.DI;
using xPushService.Helpers; using xPushService.Helpers;
using xServices.Databases;
using xServices.DI; using xServices.DI;
namespace xApi namespace xApi
@@ -110,97 +111,109 @@ namespace xApi
}); });
// //
// Register XPushService ... // Check Data Service ...
services.AddXPushService(Configuration); var dataServiceConfig = Configuration.GetXDataServiceConfiguration();
services.AddXPushHubProvider(lifeTime);
// //
// Register XIdentityService ... // Check DataBase Registration ...
services.AddXIdentityService(Configuration, lifeTime); services.AddXDatabase(
configuration: Configuration,
// descriptor: new XApiDatabaseDescriptor(),
// Register DataService here ... lifetime: ServiceLifetime.Scoped
#region Register xDataService ...
//
// Register IXDataServiceHelper ...
services.AddSingleton<IXDataServiceHelper, XDataHelperDataProviderHelper>();
//
// Prepare Db Options Builder based on Provider ...
var providerType = Configuration.GetXDbProviderType();
switch (providerType)
{
//
case XDbProviders.MySQL:
case XDbProviders.SQLite:
case XDbProviders.SQLServer:
Action<dynamic> optionsBuilder = optionsBuilder = b =>
{
b.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name);
};
//
// Register xDataService on DI ...
services.AddXDataService<XDataHelperDbContext, XDataHelperDbSeeder>(
Configuration,
lifeTime,
XDbProviderConfigurations.DEFAULT_CONNECTION_NAME,
optionsBuilder
);
break;
//
case XDbProviders.MongoDB:
//
// Register xDataService on DI ...
services.AddXDataService<XDataHelperDbSeeder>(
Configuration,
lifeTime,
XDbProviderConfigurations.DEFAULT_CONNECTION_NAME
);
break;
}
#endregion
//
// Register GraphQL here ...
#region Register xGraphQL ...
//
services.Configure<IISServerOptions>(options =>
{
options.AllowSynchronousIO = true;
});
//
services.Configure<KestrelServerOptions>(options =>
{
options.AllowSynchronousIO = true;
});
//
// Register XGraphQL Helper ...
services.AddSingleton<IXGraphQLHelper, XDataHelperGraphQLHelper>();
//
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
// //
// // Register XPushService ...
// services.AddXPushService(Configuration);
// services.AddXPushHubProvider(lifeTime);
// //
// // Register XIdentityService ...
// services.AddXIdentityService(Configuration, lifeTime);
// //
// // Register DataService here ...
// #region Register xDataService ...
// //
// // Register IXDataServiceHelper ...
// services.AddSingleton<IXDataServiceHelper, XDataHelperDataProviderHelper>();
// //
// // Prepare Db Options Builder based on Provider ...
// var providerType = Configuration.GetXDbProviderType();
// switch (providerType)
// {
// //
// case XDbProviders.MySQL:
// case XDbProviders.SQLite:
// case XDbProviders.SQLServer:
// Action<dynamic> optionsBuilder = optionsBuilder = b =>
// {
// b.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name);
// };
// //
// // Register xDataService on DI ...
// services.AddXDataService<XDataHelperDbContext, XDataHelperDbSeeder>(
// Configuration,
// lifeTime,
// XDbProviderConfigurations.DEFAULT_CONNECTION_NAME,
// optionsBuilder
// );
// break;
// //
// case XDbProviders.MongoDB:
// //
// // Register xDataService on DI ...
// services.AddXDataService<XDataHelperDbSeeder>(
// Configuration,
// lifeTime,
// XDbProviderConfigurations.DEFAULT_CONNECTION_NAME
// );
// break;
// }
// #endregion
// //
// // Register GraphQL here ...
// #region Register xGraphQL ...
// //
// services.Configure<IISServerOptions>(options =>
// {
// options.AllowSynchronousIO = true;
// });
// //
// services.Configure<KestrelServerOptions>(options =>
// {
// options.AllowSynchronousIO = true;
// });
// //
// // Register XGraphQL Helper ...
// services.AddSingleton<IXGraphQLHelper, XDataHelperGraphQLHelper>();
// //
// 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) public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
@@ -243,24 +256,24 @@ namespace xApi
// //
#region XPushService ... #region XPushService ...
// // //
var helper = new XPushServiceHelper(); // var helper = new XPushServiceHelper();
// // //
app.UseXPushService(helper); // app.UseXPushService(helper);
#endregion #endregion
// //
// Use xDataService Middleware ... // Use xDataService Middleware ...
app.UseXDataService(); // app.UseXDataService();
// //
// Using Services ... // Using Services ...
app.UseXServices(); // app.UseXServices();
// //
// Use xGraphQL Middleware ... // Use xGraphQL Middleware ...
app.UseXGraphQL(withPlayground: withPlayground); // app.UseXGraphQL(withPlayground: withPlayground);
} }
} }
} }
+6 -4
View File
@@ -18,10 +18,6 @@
"Url": "https://www.saherelm.ir" "Url": "https://www.saherelm.ir"
} }
}, },
"XDbProvider": "SQLITE",
"ConnectionStrings": {
"DataConnection": "Filename=./Db/XApi.db"
},
"MessageConfiguration": { "MessageConfiguration": {
"MailConfigurations": { "MailConfigurations": {
"gmail": { "gmail": {
@@ -55,6 +51,12 @@
"NewDeviceLoggedIn": "new_device_logged_in_msg" "NewDeviceLoggedIn": "new_device_logged_in_msg"
}, },
"DataServiceConfiguration": { "DataServiceConfiguration": {
"Databases": {
"xApiDb": {
"Provider": "SQLITE",
"ConnectionString": "Filename=./Db/XApi.db"
}
},
"EnableTracking": true, "EnableTracking": true,
"EnableSoftDelete": false, "EnableSoftDelete": false,
"EnableDetailedErrors": false, "EnableDetailedErrors": false,