use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[schema(example = json!({
"region_id": "visual_cortex",
"name": "Visual Cortex",
"region_type": "Sensory",
"parent_id": "neocortex",
"cortical_areas": ["v1", "v2", "v4"],
"child_count": 3
}))]
pub struct BrainRegionSummary {
pub region_id: String,
pub name: String,
pub region_type: String,
pub parent_id: Option<String>,
pub cortical_areas: Vec<String>,
pub child_count: usize,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
#[schema(example = json!({
"region_id": "visual_cortex",
"name": "Visual Cortex",
"region_type": "Sensory",
"parent_id": "neocortex",
"cortical_areas": ["v1", "v2", "v4"],
"child_regions": ["primary_visual", "secondary_visual"],
"properties": {}
}))]
pub struct BrainRegionDetail {
pub region_id: String,
pub name: String,
pub region_type: String,
pub parent_id: Option<String>,
pub cortical_areas: Vec<String>,
pub child_regions: Vec<String>,
pub properties: serde_json::Value,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct CreateBrainRegionRequest {
pub region_id: String,
pub name: String,
pub region_type: String,
#[serde(default)]
pub parent_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct BrainRegionListResponse {
pub brain_regions: Vec<BrainRegionSummary>,
pub total_count: usize,
}