Files
xSaherElmAiApi/Data/Helpers/XAiApiDataHelperGraphQLHelper.cs
T
2026-04-24 00:33:50 +03:30

126 lines
4.7 KiB
C#

using System;
using GraphQL.Server;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using xAiApi.AI.DataHelper.GraphQL;
using xAiApi.AI.Interfaces.Entities;
using xAiApi.AI.Models.Entities;
using xAiApi.Data.GraphQL;
using xAiApi.Data.Interfaces;
using xAiApi.Data.Models.Entities;
using xDataService.Configuration;
using xDataService.GraphQL;
using xDataService.Interfaces;
namespace xAiApi.Data.Helpers
{
public class XAiApiDataHelperGraphQLHelper : IXGraphQLHelper
{
public void AddXGraphEnumTypes(IServiceCollection services) { }
public void AddXGraphInputTypes(IServiceCollection services) { }
public void AddXGraphMutations(IServiceCollection services) { }
public void AddXGraphObjectTypes(IServiceCollection services)
{
//
// XTest ...
services.AddSingleton<XTestGraphType>();
services.AddSingleton<XBaseGraphQLEventType<XTest, int, XTestGraphType>>();
//
// XAiMessage ...
services.AddSingleton<XAiMessageGraphType>();
services.AddSingleton<XBaseGraphQLEventType<XAiMessage, Guid, XAiMessageGraphType>>();
//
// XAiProject ...
services.AddSingleton<XAiProjectGraphType>();
services.AddSingleton<XBaseGraphQLEventType<XAiProject, Guid, XAiProjectGraphType>>();
//
// XAiConversation ...
services.AddSingleton<XAiConversationGraphType>();
services.AddSingleton<XBaseGraphQLEventType<XAiConversation, Guid, XAiConversationGraphType>>();
}
public void AddXGraphQueries(IServiceCollection services)
{
//
// XTest ...
services.AddSingleton<IXTestGraphQLTypeHelper, XTestGraphQLTypeHelper>();
services.AddScoped<XTestGraphQuery>();
//
// XAiMessage ...
services.AddSingleton<IXAiMessageGraphQLTypeHelper, XAiMessageGraphQLTypeHelper>();
services.AddScoped<XAiMessageGraphQuery>();
//
// XAiProject ...
services.AddSingleton<IXAiProjectGraphQLTypeHelper, XAiProjectGraphQLTypeHelper>();
services.AddScoped<XAiProjectGraphQuery>();
//
// XAiConversation ...
services.AddSingleton<IXAiConversationGraphQLTypeHelper, XAiConversationGraphQLTypeHelper>();
services.AddScoped<XAiConversationGraphQuery>();
}
public void AddXGraphSchemas(IServiceCollection services)
{
//
services.AddScoped<XTestGraphSchema>();
services.AddScoped<XAiMessageGraphSchema>();
services.AddScoped<XAiProjectGraphSchema>();
services.AddScoped<XAiConversationGraphSchema>();
}
public void AddXGraphSubscriptions(IServiceCollection services) { }
public IGraphQLBuilder AddXGraphTypes(IGraphQLBuilder builder)
{
//
builder.AddGraphTypes(typeof(XTestGraphSchema));
//
return builder;
}
public void UseXGraph(IApplicationBuilder app)
{
//
using (var scope = app.ApplicationServices.CreateScope())
{
//
// XDataServiceConfiguration ...
var dataServiceConfiguration = scope.ServiceProvider.GetService<XDataServiceConfiguration>();
//
// XTest ...
var testHelper = scope.ServiceProvider.GetService<IXTestGraphQLTypeHelper>();
app.UseGraphQL<XTestGraphSchema>(testHelper.GetGraphQLPath());
app.UseGraphQLWebSockets<XTestGraphSchema>();
//
// XAiMessage ...
var aiMessageHelper = scope.ServiceProvider.GetService<IXAiMessageGraphQLTypeHelper>();
app.UseGraphQL<XAiMessageGraphSchema>(aiMessageHelper.GetGraphQLPath());
app.UseGraphQLWebSockets<XAiMessageGraphSchema>();
//
// XAiProject ...
var aiProjectHelper = scope.ServiceProvider.GetService<IXAiProjectGraphQLTypeHelper>();
app.UseGraphQL<XAiProjectGraphSchema>(aiProjectHelper.GetGraphQLPath());
app.UseGraphQLWebSockets<XAiProjectGraphSchema>();
//
// XAiConversation ...
var aiConversationHelper = scope.ServiceProvider.GetService<IXAiConversationGraphQLTypeHelper>();
app.UseGraphQL<XAiConversationGraphSchema>(aiConversationHelper.GetGraphQLPath());
app.UseGraphQLWebSockets<XAiConversationGraphSchema>();
}
}
}
}