Skip to main content

interstice_sdk_core/
context.rs

1use serde::{Deserialize, Serialize};
2use std::marker::PhantomData;
3
4pub use interstice_abi::{RawQueryContext, RawReducerContext};
5
6
7#[derive(Debug, Clone, Deserialize, Serialize)]
8pub struct ReducerContextCurrentModuleTables<Caps = ()> {
9    #[serde(skip)]
10    _caps: PhantomData<Caps>,
11}
12
13impl<Caps> Default for ReducerContextCurrentModuleTables<Caps> {
14    fn default() -> Self {
15        Self { _caps: PhantomData }
16    }
17}
18
19#[derive(Debug, Clone, Deserialize, Serialize)]
20pub struct ReducerContextCurrentModule<Caps = ()> {
21    pub tables: ReducerContextCurrentModuleTables<Caps>,
22}
23
24#[derive(Debug, Clone, Deserialize, Serialize)]
25pub struct QueryContextCurrentModuleTables<Caps = ()> {
26    #[serde(skip)]
27    _caps: PhantomData<Caps>,
28}
29
30impl<Caps> Default for QueryContextCurrentModuleTables<Caps> {
31    fn default() -> Self {
32        Self { _caps: PhantomData }
33    }
34}
35
36#[derive(Debug, Clone, Deserialize, Serialize)]
37pub struct QueryContextCurrentModule<Caps = ()> {
38    pub tables: QueryContextCurrentModuleTables<Caps>,
39}
40
41#[derive(Debug, Clone, Deserialize, Serialize)]
42pub struct ReducerContext<Caps = ()> {
43    pub caller_node_id: String,
44    pub current: ReducerContextCurrentModule<Caps>,
45}
46
47impl<Caps> From<RawReducerContext> for ReducerContext<Caps> {
48    fn from(raw: RawReducerContext) -> Self {
49        Self {
50            caller_node_id: raw.caller_node_id,
51            current: ReducerContextCurrentModule {
52                tables: ReducerContextCurrentModuleTables::default(),
53            },
54        }
55    }
56}
57
58#[derive(Debug, Clone, Deserialize, Serialize)]
59pub struct QueryContext<Caps = ()> {
60    pub caller_node_id: String,
61    pub current: QueryContextCurrentModule<Caps>,
62}
63
64impl<Caps> From<RawQueryContext> for QueryContext<Caps> {
65    fn from(raw: RawQueryContext) -> Self {
66        Self {
67            caller_node_id: raw.caller_node_id,
68            current: QueryContextCurrentModule {
69                tables: QueryContextCurrentModuleTables::default(),
70            },
71        }
72    }
73}