vespertide_core/schema/
column.rs

1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use crate::schema::{foreign_key::ForeignKeyDef, names::ColumnName, str_or_bool::StrOrBoolOrArray};
5
6#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
7#[serde(rename_all = "snake_case")]
8pub struct ColumnDef {
9    pub name: ColumnName,
10    pub r#type: ColumnType,
11    pub nullable: bool,
12    pub default: Option<String>,
13    pub comment: Option<String>,
14    pub primary_key: Option<bool>,
15    pub unique: Option<StrOrBoolOrArray>,
16    pub index: Option<StrOrBoolOrArray>,
17    pub foreign_key: Option<ForeignKeyDef>,
18}
19
20#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
21pub enum ColumnType {
22    Integer,
23    BigInt,
24    Text,
25    Boolean,
26    Timestamp,
27    Custom(String),
28}