#![allow(unreachable_pub)]
use std::time::Duration;
use temporalio_macros::{activities, workflow, workflow_methods};
use temporalio_sdk::{
ActivityOptions, WorkflowContext, WorkflowResult,
activities::{ActivityContext, ActivityError},
};
#[workflow]
#[derive(Default)]
pub struct HelloWorldWorkflow;
#[workflow_methods]
impl HelloWorldWorkflow {
#[run]
pub async fn run(ctx: &mut WorkflowContext<Self>, name: String) -> WorkflowResult<String> {
let greeting = ctx
.start_activity(
GreetingActivities::greet,
name,
ActivityOptions::start_to_close_timeout(Duration::from_secs(10)),
)
.await
.map_err(|e| anyhow::anyhow!("{e}"))?;
Ok(greeting)
}
}
pub struct GreetingActivities;
#[activities]
impl GreetingActivities {
#[activity]
pub async fn greet(_ctx: ActivityContext, name: String) -> Result<String, ActivityError> {
Ok(format!("Hello, {}!", name))
}
}