working on course comment

This commit is contained in:
2025-09-12 22:05:41 +03:30
parent 54b10d0d02
commit 09ef1b979e
12 changed files with 151 additions and 60 deletions
@@ -0,0 +1,6 @@
using VizhTalk.Grpc.Learning;
namespace VizhTalk.Gateway.Web.BFF.Models;
public record CreateCourseRequest(string title, string description, IFile image, Id languageid);
public record UpdateCourseRequest(Id id, string title, string description, Int32 order, IFile image, Id languageid);
@@ -1,38 +0,0 @@
using VizhTalk.Gateway.Web.BFF.Mappers;
using VizhTalk.Gateway.Web.BFF.Models;
using VizhTalk.Grpc.Learning;
using VizhTalk.Grpc.Learning.Language;
namespace VizhTalk.Gateway.Web.BFF.Mutations;
public class LanguageMutation(LanguageGrpc.LanguageGrpcClient client)
{
[GraphQLName("CreateLanguage")]
public async Task<LanguageDTO> CreateLanguage(CreateLanguageRequest request)
{
return await client.CreateAsync(new CreateLanguageCommand()
{
Title = request.Title,
Icon = await request.Icon.AsFile()
});
}
[GraphQLName("UpdateLanguage")]
public async Task<LanguageDTO> UpdateLanguage(UpdateLanguageRequest request)
{
UploadFile file = null;
if(request.Icon != null)
{
file = await request.Icon.AsFile();
}
return await client.UpdateAsync(new UpdateLanguageCommand()
{
Id = new Id()
{
Value = request.Id.Value
},
Title = request.Title,
Icon = file
});
}
}
@@ -0,0 +1,74 @@
using VizhTalk.Gateway.Web.BFF.Mappers;
using VizhTalk.Gateway.Web.BFF.Models;
using VizhTalk.Grpc.Learning;
using VizhTalk.Grpc.Learning.Course;
using VizhTalk.Grpc.Learning.Language;
namespace VizhTalk.Gateway.Web.BFF.Mutations;
public class Mutation(LanguageGrpc.LanguageGrpcClient languageClient,
CourseGrpc.CourseGrpcClient courseClient)
{
[GraphQLName("CreateLanguage")]
public async Task<LanguageDTO> CreateLanguage(CreateLanguageRequest request)
{
return await languageClient.CreateAsync(new CreateLanguageCommand()
{
Title = request.Title,
Icon = await request.Icon.AsFile()
});
}
[GraphQLName("UpdateLanguage")]
public async Task<LanguageDTO> UpdateLanguage(UpdateLanguageRequest request)
{
UploadFile file = null;
if (request.Icon != null)
{
file = await request.Icon.AsFile();
}
return await languageClient.UpdateAsync(new UpdateLanguageCommand()
{
Id = new Id()
{
Value = request.Id.Value
},
Title = request.Title,
Icon = file
});
}
[GraphQLName("CreateCourse")]
public async Task<CourseDTO> CreateCourse(CreateCourseRequest input)
{
return await courseClient.CreateAsync(new CreateCourseCommand()
{
Title = input.title,
Image = await input.image.AsFile(),
Description = input.description,
Languageid = input.languageid
});
}
[GraphQLName("UpdateCourse")]
public async Task<CourseDTO> UpdateCourse(UpdateCourseRequest input)
{
UploadFile file = null;
if (input.image != null)
{
file = await input.image.AsFile();
}
return await courseClient.UpdateAsync(new UpdateCourseCommand()
{
Id = new Id()
{
Value = input.id.Value
},
Order = input.order,
Title = input.title,
Image = file,
Description = input.description,
Languageid = input.languageid
});
}
}
+11 -4
View File
@@ -1,5 +1,6 @@
using VizhTalk.Gateway.Web.BFF.Mutations;
using VizhTalk.Gateway.Web.BFF.Queries;
using VizhTalk.Grpc.Learning.Course;
using VizhTalk.Grpc.Learning.Language;
var builder = WebApplication.CreateBuilder(args);
@@ -8,12 +9,18 @@ builder.Services.AddGrpcClient<LanguageGrpc.LanguageGrpcClient>(o =>
o.Address = new Uri("https://localhost:5000");
});
builder.Services.AddScoped<LanguageQuery>();
builder.Services.AddScoped<LanguageMutation>();
builder.Services.AddGrpcClient<CourseGrpc.CourseGrpcClient>(o =>
{
o.Address = new Uri("https://localhost:5000");
});
builder.Services.AddScoped<Query>();
builder.Services.AddScoped<Mutation>();
builder.AddGraphQL()
.AddQueryType<LanguageQuery>()
.AddMutationType<LanguageMutation>()
.AddQueryType<Query>()
.AddMutationType<Mutation>()
.AddType<UploadType>()
.AddMutationConventions();
@@ -1,15 +0,0 @@
using VizhTalk.Grpc.Learning.Language;
namespace VizhTalk.Gateway.Web.BFF.Queries
{
public class LanguageQuery(LanguageGrpc.LanguageGrpcClient client)
{
[GraphQLName("Languages")]
public async Task<GetAllLanguageDTO> GetAllLanguage(GetAllLanguageQuery request)
=> await client.GetAllAsync(request);
[GraphQLName("LanguageByTitle")]
public async Task<LanguageDTO> GetLanguageByTitle(GetLanguageByTitleQuery request)
=> await client.GetByTitleAsync(request);
}
}
+14
View File
@@ -0,0 +1,14 @@
using VizhTalk.Grpc.Learning.Language;
namespace VizhTalk.Gateway.Web.BFF.Queries;
public class Query(LanguageGrpc.LanguageGrpcClient client)
{
[GraphQLName("Languages")]
public async Task<GetAllLanguageDTO> GetAllLanguage(GetAllLanguageQuery request)
=> await client.GetAllAsync(request);
[GraphQLName("LanguageByTitle")]
public async Task<LanguageDTO> GetLanguageByTitle(GetLanguageByTitleQuery request)
=> await client.GetByTitleAsync(request);
}