use crate::module_resources::ModuleResourceFilter;
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct PatchModuleResourceBody {
pub filter: ModuleResourceFilter,
pub patch_operations: Vec<ModuleResourceOperation>,
}
#[derive(Debug, Clone, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(tag = "op", rename_all = "snake_case")]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub enum ModuleResourceOperation {
Add {
path: String,
value: serde_json::Value,
},
Remove {
path: String,
},
Replace {
path: String,
value: serde_json::Value,
},
Move {
from: String,
path: String,
},
Copy {
from: String,
path: String,
},
Test {
path: String,
value: serde_json::Value,
},
}