Skip to main content

actrpc_core/action/
requested_action_record.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4use crate::action::{ActionKind, ActionSpec, RequestedAction};
5
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct RequestedActionRecord {
8    pub kind: ActionKind,
9    #[serde(default, skip_serializing_if = "Option::is_none")]
10    pub params: Option<Value>,
11}
12
13impl<A> TryFrom<RequestedAction<A>> for RequestedActionRecord
14where
15    A: ActionSpec,
16{
17    type Error = serde_json::Error;
18
19    fn try_from(value: RequestedAction<A>) -> Result<Self, Self::Error> {
20        Ok(Self {
21            kind: A::KIND.into(),
22            params: Some(serde_json::to_value(value.params)?),
23        })
24    }
25}