idiolect-records 0.6.0

Rust record types mirroring the dev.idiolect.* Lexicon family.
Documentation
// @generated by idiolect-codegen. do not edit.
// source: dev.panproto.schema.protocol

//! Generated from `dev.panproto.schema.protocol`.

#![allow(
    missing_docs,
    clippy::doc_markdown,
    clippy::struct_excessive_bools,
    clippy::derive_partial_eq_without_eq
)]
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PanprotoProtocol {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub category: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub constraint_sorts: Option<Vec<String>>,
    pub created_at: idiolect_records::Datetime,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub edge_rules: Option<Vec<EdgeRule>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub has_causal: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub has_coercions: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub has_coproducts: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub has_defaults: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub has_mergers: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub has_order: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub has_recursion: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub instance_composition: Option<CompositionSpec>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub instance_theory: Option<String>,
    pub name: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub nominal_identity: Option<bool>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub obj_kinds: Option<Vec<String>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub schema_composition: Option<CompositionSpec>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub schema_theory: Option<String>,
}

impl crate::Record for PanprotoProtocol {
    const NSID: &'static str = "dev.panproto.schema.protocol";
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CompositionSpec {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub shared_sorts: Option<Vec<String>>,
    pub theories: Vec<String>,
}

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EdgeRule {
    pub edge_kind: String,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub src_kinds: Option<Vec<String>>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub tgt_kinds: Option<Vec<String>>,
}