vespertide_core/schema/
foreign_key.rs

1use 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    /// table.column
19    String(String),
20    Object(ForeignKeyDef),
21}