use std::collections::HashMap;
use dashmap::DashMap;
use serde_json::Value;
#[derive(Debug, Clone)]
pub struct Task {
pub task_arn: String,
pub cluster_arn: String,
pub task_definition_arn: String,
pub status: String,
pub started_at: String,
pub group: String,
}
#[derive(Debug, Clone)]
pub struct Service {
pub service_name: String,
pub service_arn: String,
pub cluster_arn: String,
pub task_definition: String,
pub desired_count: i64,
pub running_count: i64,
pub status: String,
pub launch_type: String,
pub created_at: String,
}
#[derive(Debug)]
pub struct Cluster {
pub name: String,
pub arn: String,
pub status: String,
pub services: HashMap<String, Service>,
pub tasks: HashMap<String, Task>,
#[allow(dead_code)]
pub created_at: String,
pub capacity_providers: Vec<String>,
pub default_capacity_provider_strategy: Vec<Value>,
}
#[derive(Debug, Clone)]
pub struct TaskDefinition {
pub family: String,
pub revision: u32,
pub arn: String,
pub container_definitions: Value,
pub status: String,
pub network_mode: String,
pub requires_compatibilities: Vec<String>,
}
#[derive(Debug, Clone)]
pub struct CapacityProvider {
pub name: String,
pub arn: String,
pub status: String,
}
#[derive(Debug, Default)]
pub struct EcsState {
pub clusters: DashMap<String, Cluster>,
pub task_definitions: DashMap<String, Vec<TaskDefinition>>,
pub resource_tags: DashMap<String, HashMap<String, String>>,
pub capacity_providers: DashMap<String, CapacityProvider>,
pub account_settings: DashMap<String, String>,
pub attributes: DashMap<String, HashMap<String, String>>,
}