vespertide_core/schema/
constraint.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use crate::schema::{ReferenceAction, names::ColumnName, names::TableName};
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
7#[serde(rename_all = "snake_case", tag = "type")]
8pub enum TableConstraint {
9    PrimaryKey(Vec<ColumnName>),
10    Unique {
11        name: Option<String>,
12        columns: Vec<ColumnName>,
13    },
14    ForeignKey {
15        name: Option<String>,
16        columns: Vec<ColumnName>,
17        ref_table: TableName,
18        ref_columns: Vec<ColumnName>,
19        on_delete: Option<ReferenceAction>,
20        on_update: Option<ReferenceAction>,
21    },
22    Check {
23        name: Option<String>,
24        expr: String,
25    },
26}