notebook_types/v0/
document.rs

1use super::analysis::Analysis;
2use super::api::Link;
3use super::diagram_judgment::DiagramJudgment;
4use super::model_judgment::ModelJudgment;
5use super::notebook::Notebook;
6
7use serde::{Deserialize, Serialize};
8use tsify::Tsify;
9
10/// This is the content of a model document. For legacy reasons, we reserve
11/// the name "ModelDocument" for `Document & { type: "model" }`.
12#[derive(PartialEq, Eq, Debug, Serialize, Deserialize, Tsify)]
13#[tsify(into_wasm_abi, from_wasm_abi)]
14pub struct ModelDocumentContent {
15    pub name: String,
16    pub theory: String,
17    pub notebook: Notebook<ModelJudgment>,
18}
19
20#[derive(PartialEq, Eq, Debug, Serialize, Deserialize, Tsify)]
21#[tsify(into_wasm_abi, from_wasm_abi)]
22pub struct DiagramDocumentContent {
23    pub name: String,
24    #[serde(rename = "diagramIn")]
25    pub diagram_in: Link,
26    pub notebook: Notebook<DiagramJudgment>,
27}
28
29#[derive(PartialEq, Eq, Debug, Serialize, Deserialize, Tsify)]
30#[tsify(into_wasm_abi, from_wasm_abi)]
31pub enum AnalysisType {
32    #[serde(rename = "model")]
33    Model,
34    #[serde(rename = "diagram")]
35    Diagram,
36}
37
38#[derive(PartialEq, Eq, Debug, Serialize, Deserialize, Tsify)]
39#[tsify(into_wasm_abi, from_wasm_abi)]
40pub struct AnalysisDocumentContent {
41    pub name: String,
42    #[serde(rename = "analysisType")]
43    pub analysis_type: AnalysisType,
44    #[serde(rename = "analysisOf")]
45    pub analysis_of: Link,
46    pub notebook: Notebook<Analysis>,
47}
48
49#[derive(PartialEq, Eq, Debug, Serialize, Deserialize, Tsify)]
50#[serde(tag = "type")]
51#[tsify(into_wasm_abi, from_wasm_abi)]
52pub enum Document {
53    #[serde(rename = "model")]
54    Model(ModelDocumentContent),
55    #[serde(rename = "diagram")]
56    Diagram(DiagramDocumentContent),
57    #[serde(rename = "analysis")]
58    Analysis(AnalysisDocumentContent),
59}