1use serde::{Deserialize, Serialize};
2use time::OffsetDateTime;
3
4#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
5#[serde(rename_all = "lowercase")]
6pub enum RunSource {
7 Task,
8 Inline,
9}
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
12#[serde(rename_all = "lowercase")]
13pub enum RunStatus {
14 Success,
15 Failed,
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
19pub struct RunRecord {
20 pub id: String,
21 pub name: String,
22 pub source: RunSource,
23 pub command_preview: String,
24 #[serde(with = "time::serde::rfc3339")]
25 pub started_at: OffsetDateTime,
26 pub duration_ms: i64,
27 pub exit_code: i32,
28 pub status: RunStatus,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub stderr_tail: Option<String>,
31}