Skip to main content

smol_workflow_engine/durable/
json.rs

1//! Typed JSON payloads stored in durable SQLite `*_json` columns.
2//!
3//! SQLite enforces `json_valid(...)`; these serde types are the application-level
4//! schema used when creating and reading durable runner payloads.
5
6use crate::metadata::WorkflowMetadata;
7use serde::{Deserialize, Serialize};
8use serde_json::Value;
9use std::path::PathBuf;
10
11#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
12#[serde(rename_all = "camelCase")]
13pub struct LocalTaskParamsJSON {
14    pub mode: DurableRunMode,
15    pub script_path: PathBuf,
16    pub args: Value,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub budget_total: Option<u64>,
19}
20
21#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
22#[serde(rename_all = "camelCase")]
23pub struct WorkflowRunJSON {
24    pub mode: DurableRunMode,
25    pub script_path: PathBuf,
26    #[serde(default, skip_serializing_if = "Option::is_none")]
27    pub metadata: Option<WorkflowMetadata>,
28}
29
30#[derive(Debug, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
31#[serde(rename_all = "kebab-case")]
32pub enum DurableRunMode {
33    Local,
34}
35
36#[derive(Debug, Clone, Deserialize, Serialize, PartialEq, Eq)]
37#[serde(rename_all = "camelCase")]
38pub struct FailureReasonJSON {
39    pub message: String,
40}