mcprotocol_rs/server_features/
resources.rs1use async_trait::async_trait;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4
5use crate::Result;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct Resource {
10 pub id: String,
12 pub type_: String,
14 pub metadata: Value,
16 pub content: Option<Value>,
18}
19
20#[async_trait]
22pub trait ResourceManager: Send + Sync {
23 async fn list_resources(&self) -> Result<Vec<Resource>>;
25
26 async fn get_resource(&self, id: &str) -> Result<Resource>;
28
29 async fn create_resource(&self, resource: Resource) -> Result<()>;
31
32 async fn update_resource(&self, id: &str, resource: Resource) -> Result<()>;
34
35 async fn delete_resource(&self, id: &str) -> Result<()>;
37}