use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use serde_json::Value;
use crate::Result;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Resource {
pub id: String,
pub type_: String,
pub metadata: Value,
pub content: Option<Value>,
}
#[async_trait]
pub trait ResourceManager: Send + Sync {
async fn list_resources(&self) -> Result<Vec<Resource>>;
async fn get_resource(&self, id: &str) -> Result<Resource>;
async fn create_resource(&self, resource: Resource) -> Result<()>;
async fn update_resource(&self, id: &str, resource: Resource) -> Result<()>;
async fn delete_resource(&self, id: &str) -> Result<()>;
}