30 lines
1.3 KiB
C#
30 lines
1.3 KiB
C#
using FictionArchive.Common.Enums;
|
|
using FictionArchive.Service.TranslationService.Models.Database;
|
|
using FictionArchive.Service.TranslationService.Models.Enums;
|
|
using FictionArchive.Service.TranslationService.Services.Database;
|
|
using FictionArchive.Service.TranslationService.Services.TranslationEngines;
|
|
|
|
namespace FictionArchive.Service.TranslationService.GraphQL;
|
|
|
|
public class Mutation
|
|
{
|
|
public async Task<string> TranslateText(string text, Language from, Language to, string translationEngineKey, IEnumerable<ITranslationEngine> translationEngines, TranslationServiceDbContext dbContext)
|
|
{
|
|
var engine = translationEngines.FirstOrDefault(engine => engine.Descriptor.Key == translationEngineKey);
|
|
var translation = await engine.GetTranslation(text, from, to);
|
|
|
|
dbContext.TranslationRequests.Add(new TranslationRequest()
|
|
{
|
|
OriginalText = text,
|
|
BilledCharacterCount = 0, // FILL ME
|
|
From = from,
|
|
To = to,
|
|
Status = translation != null ? TranslationRequestStatus.Success : TranslationRequestStatus.Failed,
|
|
TranslatedText = translation,
|
|
TranslationEngineKey = translationEngineKey
|
|
});
|
|
await dbContext.SaveChangesAsync();
|
|
|
|
return translation;
|
|
}
|
|
} |