vespertide_core/schema/
constraint.rs1use 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}