temporal_test/Program.cs
2025-05-09 13:18:36 +05:30

52 lines
1.5 KiB
C#

using Microsoft.AspNetCore.Http.HttpResults;
using Temporalio.Client;
using Temporalio.Extensions.Hosting;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
builder.Services
.AddHostedTemporalWorker(
clientTargetHost: "localhost:7233",
clientNamespace: "default",
taskQueue: MyWorkflow.TaskQueue)
.AddWorkflow<MyWorkflow>();
builder.Services.AddSingleton(ct => TemporalClient.ConnectAsync(new()
{
TargetHost = "localhost:7233"
}));
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.MapOpenApi();
}
app.UseHttpsRedirection();
app.MapGet("/", async (Task<TemporalClient> clientTask, string? name) =>
{
var client = await clientTask;
var isRunning = await client.StartWorkflowAsync(
(MyWorkflow wf) => wf.RunAsync(name ?? "Temporal"),
new(id: $"aspnet-sample-workflow-{Guid.NewGuid()}", taskQueue: MyWorkflow.TaskQueue));
return Results.Ok(isRunning.Id);
});
app.MapGet("/Get", async (Task<TemporalClient> clientTask, string GetId) =>
{
var client = await clientTask;
var handle = client.GetWorkflowHandle(GetId);
var responce = await handle.DescribeAsync();
if (responce.Status != Temporalio.Api.Enums.V1.WorkflowExecutionStatus.Completed)
return Results.Ok(responce.Status.ToString());
var result = await handle.GetResultAsync<string>();
return Results.Ok(result);
});
app.Run();