This commit is contained in:
2025-09-08 23:07:25 +04:30
parent 33dd1f781b
commit d858a5ad77
26 changed files with 624 additions and 16 deletions
@@ -0,0 +1,20 @@
using Google.Protobuf;
using VizhTalk.Grpc.Learning;
namespace VizhTalk.Gateway.Web.BFF.Mappers
{
public static class UploadMapper
{
public static async Task<UploadFile> AsFile(this IFile file)
{
MemoryStream stream = new MemoryStream();
await file.CopyToAsync(stream);
return new UploadFile()
{
ContentType = file.ContentType,
File = ByteString.FromStream(stream),
Name = file.Name,
};
}
}
}
+3
View File
@@ -0,0 +1,3 @@
namespace VizhTalk.Gateway.Web.BFF.Models;
public record IdRequest(string Value);
@@ -0,0 +1,4 @@
namespace VizhTalk.Gateway.Web.BFF.Models;
public record CreateLanguageRequest(string Title,IFile Icon);
public record UpdateLanguageRequest(IdRequest Id, string Title,IFile Icon);
@@ -1,4 +1,6 @@
using VizhTalk.Grpc.Learning;
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;
@@ -6,10 +8,23 @@ namespace VizhTalk.Gateway.Web.BFF.Mutations;
public class LanguageMutation(LanguageGrpc.LanguageGrpcClient client)
{
[GraphQLName("CreateLanguage")]
public async Task<LanguageDTO> CreateLanguage(CreateLanguageCommand request)
=> await client.CreateAsync(request);
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(UpdateLanguageCommand request)
=> await client.UpdateAsync(request);
public async Task<LanguageDTO> UpdateLanguage(UpdateLanguageRequest request)
{
return await client.UpdateAsync(new UpdateLanguageCommand()
{
Id = new Id(request.Id.Value),
Title = request.Title,
Icon = await request.Icon.AsFile()
});
}
}
@@ -5,8 +5,8 @@ namespace VizhTalk.Gateway.Web.BFF.Queries
public class LanguageQuery(LanguageGrpc.LanguageGrpcClient client)
{
[GraphQLName("Languages")]
public async Task<GetAllLanguageDTO> GetAllLanguage()
=> await client.GetAllAsync(new GetAllLanguageQuery());
public async Task<GetAllLanguageDTO> GetAllLanguage(GetAllLanguageQuery request)
=> await client.GetAllAsync(request);
[GraphQLName("LanguageByTitle")]
public async Task<LanguageDTO> GetLanguageByTitle(GetLanguageByTitleQuery request)
@@ -15,4 +15,8 @@
<ProjectReference Include="..\VizhTalk.Services.Grpc.Learning\VizhTalk.Grpc.Learning.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="Types\" />
</ItemGroup>
</Project>