use serde::{Deserialize, Serialize};
use vantage_vista::VistaSpec;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct MysqlTableExtras {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mysql: Option<MysqlTableBlock>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct MysqlTableBlock {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub table: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rhai: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub base: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub inherit: Option<InheritBlock>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modify: Option<String>,
#[serde(skip)]
pub args: Vec<(String, String)>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct InheritBlock {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub columns: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub relations: Vec<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct MysqlColumnExtras {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mysql: Option<MysqlColumnBlock>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct MysqlColumnBlock {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub column: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct MysqlReferenceExtras {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mysql: Option<MysqlRefBlock>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct MysqlRefBlock {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rhai: Option<String>,
}
pub type MysqlVistaSpec = VistaSpec<MysqlTableExtras, MysqlColumnExtras, MysqlReferenceExtras>;