km_to_sql/
metadata.rs

1use serde::{Deserialize, Serialize};
2use url::Url;
3
4#[derive(Serialize, Deserialize, Debug)]
5pub struct TableMetadata {
6    pub name: String,
7    pub desc: Option<String>,
8    pub source: Option<String>,
9    pub source_url: Option<Url>,
10    pub license: Option<String>,
11    pub license_url: Option<Url>,
12
13    pub primary_key: Option<String>,
14    pub columns: Vec<ColumnMetadata>,
15}
16
17#[derive(Serialize, Deserialize, Debug)]
18pub struct ColumnMetadata {
19    pub name: String,
20    pub desc: Option<String>,
21    pub data_type: String,
22    pub foreign_key: Option<ColumnForeignKeyDetails>,
23    pub enum_values: Option<Vec<ColumnEnumDetails>>,
24}
25
26#[derive(Serialize, Deserialize, Debug)]
27pub struct ColumnForeignKeyDetails {
28    pub foreign_table: String,
29    pub foreign_column: String,
30}
31
32#[derive(Serialize, Deserialize, Debug)]
33pub struct ColumnEnumDetails {
34    pub value: String,
35    pub desc: Option<String>,
36}