data_modelling_sdk/models/
mod.rs1#[cfg(feature = "bpmn")]
7pub mod bpmn;
8pub mod cads;
9pub mod column;
10pub mod cross_domain;
11pub mod data_model;
12#[cfg(feature = "dmn")]
13pub mod dmn;
14pub mod domain;
15pub mod enums;
16pub mod odps;
17#[cfg(feature = "openapi")]
18pub mod openapi;
19pub mod relationship;
20pub mod table;
21pub mod tag;
22
23#[cfg(feature = "bpmn")]
24pub use bpmn::{BPMNModel, BPMNModelFormat};
25pub use cads::{
26 CADSAsset, CADSBPMNFormat, CADSBPMNModel, CADSCompliance, CADSComplianceControl,
27 CADSComplianceFramework, CADSComplianceStatus, CADSDMNFormat, CADSDMNModel, CADSDescription,
28 CADSExternalLink, CADSImpactArea, CADSKind, CADSMitigationStatus, CADSOpenAPIFormat,
29 CADSOpenAPISpec, CADSPricing, CADSPricingModel, CADSRisk, CADSRiskAssessment,
30 CADSRiskClassification, CADSRiskMitigation, CADSRuntime, CADSRuntimeContainer,
31 CADSRuntimeResources, CADSSLA, CADSSLAProperty, CADSStatus, CADSTeamMember,
32 CADSValidationProfile, CADSValidationProfileAppliesTo,
33};
34pub use column::{Column, ForeignKey};
35pub use cross_domain::{CrossDomainConfig, CrossDomainRelationshipRef, CrossDomainTableRef};
36pub use data_model::DataModel;
37#[cfg(feature = "dmn")]
38pub use dmn::{DMNModel, DMNModelFormat};
39pub use domain::{
40 CADSNode, CrowsfeetCardinality, Domain, NodeConnection, ODCSNode, SharedNodeReference, System,
41 SystemConnection,
42};
43pub use enums::*;
44pub use odps::{
45 ODPSApiVersion, ODPSAuthoritativeDefinition, ODPSCustomProperty, ODPSDataProduct,
46 ODPSDescription, ODPSInputContract, ODPSInputPort, ODPSManagementPort, ODPSOutputPort,
47 ODPSSBOM, ODPSStatus, ODPSSupport, ODPSTeam, ODPSTeamMember,
48};
49#[cfg(feature = "openapi")]
50pub use openapi::{OpenAPIFormat, OpenAPIModel};
51pub use relationship::{
52 ConnectionPoint, ETLJobMetadata, ForeignKeyDetails, Relationship, VisualMetadata,
53};
54pub use table::{ContactDetails, Position, SlaProperty, Table};
55pub use tag::Tag;
56
57use serde::{Deserialize, Serialize};
58
59#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
61#[serde(rename_all = "PascalCase")]
62pub enum ModelType {
63 Bpmn,
65 Dmn,
67 OpenApi,
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
75pub struct ModelReference {
76 pub model_type: ModelType,
78 #[serde(skip_serializing_if = "Option::is_none")]
80 pub domain_id: Option<uuid::Uuid>,
81 pub model_name: String,
83 #[serde(skip_serializing_if = "Option::is_none")]
85 pub description: Option<String>,
86}
87
88impl ModelReference {
89 pub fn new(model_type: ModelType, model_name: String) -> Self {
91 ModelReference {
92 model_type,
93 domain_id: None,
94 model_name,
95 description: None,
96 }
97 }
98
99 pub fn new_cross_domain(
101 model_type: ModelType,
102 domain_id: uuid::Uuid,
103 model_name: String,
104 ) -> Self {
105 ModelReference {
106 model_type,
107 domain_id: Some(domain_id),
108 model_name,
109 description: None,
110 }
111 }
112}