use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
pub type TerminalId = String;
fn default_page_id() -> String {
"default".to_string()
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
#[schemars(deny_unknown_fields)]
pub struct TerminalInfo {
#[serde(alias = "id")]
pub id: TerminalId,
#[serde(alias = "title")]
pub title: String,
#[serde(default, skip_serializing_if = "Option::is_none", alias = "pid")]
pub pid: Option<u32>,
#[serde(alias = "cols")]
pub cols: u16,
#[serde(alias = "rows")]
pub rows: u16,
#[serde(alias = "working_dir")]
pub working_dir: String,
#[serde(alias = "is_alive")]
pub is_alive: bool,
#[serde(default, skip_serializing_if = "Option::is_none", alias = "exit_code")]
pub exit_code: Option<i32>,
#[serde(alias = "created_at")]
pub created_at: u64,
#[serde(alias = "total_bytes_produced")]
pub total_bytes_produced: u64,
#[serde(default = "default_page_id", alias = "page_id")]
pub page_id: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
#[schemars(deny_unknown_fields)]
pub struct TerminalOutputEvent {
#[serde(alias = "terminal_id")]
pub terminal_id: TerminalId,
#[serde(alias = "data")]
pub data: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
#[schemars(deny_unknown_fields)]
pub struct TerminalExitEvent {
#[serde(alias = "terminal_id")]
pub terminal_id: TerminalId,
#[serde(default, skip_serializing_if = "Option::is_none", alias = "exit_code")]
pub exit_code: Option<i32>,
}