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