use serde::{Deserialize, Serialize};
use serde_json::Value;
use utoipa::ToSchema;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
pub struct RuntimeSurface {
#[serde(default)]
pub functions: Vec<RuntimeFunctionDeclaration>,
#[serde(default)]
pub schedules: Vec<ScheduledFunctionDeclaration>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
pub struct RuntimeFunctionDeclaration {
pub name: String,
pub version: u16,
pub queue: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub input_schema: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub retry_policy: Option<RuntimeRetryPolicyDeclaration>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
pub struct RuntimeRetryPolicyDeclaration {
pub max_attempts: u32,
pub initial_delay_ms: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
pub struct ScheduledFunctionDeclaration {
pub name: String,
pub function_name: String,
pub cron: String,
#[serde(default)]
pub input: Value,
}