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