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 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<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
// 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<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)
@@ -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);
}
}
}
+6 -4
View File
@@ -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,