use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct Capabilities {
pub projects: Support,
pub orphan_tasks: Support,
pub filter_by_label: Support,
pub filter_by_status: Support,
pub search_title: Support,
pub search_content: Support,
pub task_dependencies: DependencySupport,
pub project_dependencies: DependencySupport,
pub max_page_size: u32,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "kebab-case")]
pub enum Support {
Native,
Unsupported,
}
impl Support {
#[must_use]
pub fn is_native(self) -> bool {
matches!(self, Self::Native)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "kebab-case")]
pub enum DependencySupport {
BothDirections,
ForwardOnly,
}
impl DependencySupport {
#[must_use]
pub fn answers_reverse(self) -> bool {
matches!(self, Self::BothDirections)
}
}