vespertide_core/schema/
foreign_key.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use crate::schema::{names::ColumnName, names::TableName, reference::ReferenceAction};
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
7#[serde(rename_all = "snake_case")]
8pub struct ForeignKeyDef {
9 pub ref_table: TableName,
10 pub ref_columns: Vec<ColumnName>,
11 pub on_delete: Option<ReferenceAction>,
12 pub on_update: Option<ReferenceAction>,
13}
14
15#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
16#[serde(rename_all = "snake_case", untagged)]
17pub enum ForeignKeySyntax {
18 String(String),
20 Object(ForeignKeyDef),
21}