data_modelling_sdk/models/
enums.rs

1//! Enums for data modeling
2//!
3//! # Serde Casing Conventions
4//!
5//! The enums in this module use different serde `rename_all` strategies based on their
6//! semantic meaning and external schema requirements:
7//!
8//! - `SCREAMING_SNAKE_CASE`: Technical/database constants (DatabaseType, SCDPattern)
9//! - `lowercase`: Simple layer/level keywords (MedallionLayer, ModelingLevel)
10//! - `PascalCase`: Type names and relationships (Cardinality, RelationshipType, InfrastructureType)
11//! - No rename: Values that match Rust conventions (DataVaultClassification)
12//!
13//! These conventions ensure compatibility with ODCS, CADS, and other external schemas.
14
15use serde::{Deserialize, Serialize};
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
18#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
19pub enum DatabaseType {
20    DatabricksDelta,
21    DatabricksIceberg,
22    AwsGlue,
23    DatabricksLakebase,
24    Postgres,
25    Mysql,
26    SqlServer,
27    Dynamodb,
28    Cassandra,
29    Kafka,
30    Pulsar,
31}
32
33#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
34#[serde(rename_all = "lowercase")]
35pub enum MedallionLayer {
36    Bronze,
37    Silver,
38    Gold,
39    Operational,
40}
41
42#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
43#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
44pub enum SCDPattern {
45    Type1,
46    Type2,
47}
48
49#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
50pub enum DataVaultClassification {
51    Hub,
52    Link,
53    Satellite,
54}
55
56#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
57#[serde(rename_all = "lowercase")]
58pub enum ModelingLevel {
59    Conceptual,
60    Logical,
61    Physical,
62}
63
64#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
65#[serde(rename_all = "PascalCase")]
66pub enum Cardinality {
67    OneToOne,
68    OneToMany,
69    ManyToOne,
70    ManyToMany,
71}
72
73#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
74#[serde(rename_all = "PascalCase")]
75pub enum RelationshipType {
76    DataFlow,
77    Dependency,
78    ForeignKey,
79    EtlTransformation,
80}
81
82/// Infrastructure type for Data Flow nodes and relationships
83///
84/// Comprehensive enumeration covering major cloud databases, container platforms,
85/// data warehouses, message queues, BI/analytics tools, and storage systems
86/// from AWS, Azure, and GCP.
87#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
88#[serde(rename_all = "PascalCase")]
89pub enum InfrastructureType {
90    // Traditional Databases
91    PostgreSQL,
92    MySQL,
93    Mssql,
94    Oracle,
95    Sqlite,
96    MariaDB,
97    // NoSQL Databases
98    DynamoDB,
99    Cassandra,
100    MongoDB,
101    Redis,
102    ElasticSearch,
103    CouchDB,
104    Neo4j,
105    // AWS Services
106    RdsPostgreSQL,
107    RdsMySQL,
108    RdsMariaDB,
109    RdsOracle,
110    RdsSqlServer,
111    Redshift,
112    Aurora,
113    DocumentDB,
114    Neptune,
115    ElastiCache,
116    S3,
117    Eks,
118    Ecs,
119    Lambda,
120    Kinesis,
121    Sqs,
122    Sns,
123    Glue,
124    Athena,
125    QuickSight,
126    // Azure Services
127    AzureSqlDatabase,
128    CosmosDB,
129    AzureSynapseAnalytics,
130    AzureDataLakeStorage,
131    AzureBlobStorage,
132    Aks,
133    Aci,
134    AzureFunctions,
135    EventHubs,
136    ServiceBus,
137    AzureDataFactory,
138    PowerBI,
139    // GCP Services
140    CloudSqlPostgreSQL,
141    CloudSqlMySQL,
142    CloudSqlSqlServer,
143    BigQuery,
144    CloudSpanner,
145    Firestore,
146    CloudStorage,
147    Gke,
148    CloudRun,
149    CloudFunctions,
150    PubSub,
151    Dataflow,
152    Looker,
153    // Message Queues
154    Kafka,
155    Pulsar,
156    RabbitMQ,
157    ActiveMQ,
158    // Container Platforms
159    Kubernetes,
160    Docker,
161    // Data Warehouses
162    Snowflake,
163    Databricks,
164    Teradata,
165    Vertica,
166    // BI/Analytics Tools
167    Tableau,
168    Qlik,
169    Metabase,
170    ApacheSuperset,
171    Grafana,
172    // Other Storage
173    Hdfs,
174    MinIO,
175}