use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
#[schemars(deny_unknown_fields)]
pub struct ContextAutoInclude {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "taskMentions",
alias = "task_mentions"
)]
pub task_mentions: Option<Vec<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "actionTypes",
alias = "action_types"
)]
pub action_types: Option<Vec<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "errorPatterns",
alias = "error_patterns"
)]
pub error_patterns: Option<Vec<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "filePatterns",
alias = "file_patterns"
)]
pub file_patterns: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
#[schemars(deny_unknown_fields)]
pub struct Context {
#[serde(alias = "id")]
pub id: String,
#[serde(alias = "name")]
pub name: String,
#[serde(alias = "content")]
pub content: String,
#[serde(default, skip_serializing_if = "Option::is_none", alias = "category")]
pub category: Option<String>,
#[serde(default, alias = "tags")]
pub tags: Vec<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "autoInclude",
alias = "auto_include"
)]
pub auto_include: Option<ContextAutoInclude>,
#[serde(rename = "createdAt", alias = "created_at")]
pub created_at: String,
#[serde(rename = "modifiedAt", alias = "modified_at")]
pub modified_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
#[schemars(deny_unknown_fields)]
pub struct Category {
#[serde(alias = "name")]
pub name: String,
#[serde(
default = "default_true",
rename = "automationEnabled",
alias = "automation_enabled"
)]
pub automation_enabled: bool,
}
fn default_true() -> bool {
true
}