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}