actrpc_core/action/
requested_action_record.rs1use 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}