126 lines
4.7 KiB
C#
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>();
|
|
}
|
|
}
|
|
}
|
|
} |