1#![forbid(unsafe_code)]
2
3use crate::MultiColumnUniqueEntryMeta;
4use crate::constraints::{ConstraintId, ConstraintRecord, ForeignKeyAction};
5use crate::sys_catalog::{ColMeta, TableMeta};
6use crate::types::{FieldId, TableId};
7
8#[derive(Clone, Debug)]
10pub struct ForeignKeyView {
11 pub constraint_id: ConstraintId,
12 pub constraint_name: Option<String>,
13 pub referencing_table_id: TableId,
14 pub referencing_table_display: String,
15 pub referencing_table_canonical: String,
16 pub referencing_field_ids: Vec<FieldId>,
17 pub referencing_column_names: Vec<String>,
18 pub referenced_table_id: TableId,
19 pub referenced_table_display: String,
20 pub referenced_table_canonical: String,
21 pub referenced_field_ids: Vec<FieldId>,
22 pub referenced_column_names: Vec<String>,
23 pub on_delete: ForeignKeyAction,
24 pub on_update: ForeignKeyAction,
25}
26
27#[derive(Clone, Debug)]
29pub struct TableView {
30 pub table_meta: Option<TableMeta>,
31 pub column_metas: Vec<Option<ColMeta>>,
32 pub constraint_records: Vec<ConstraintRecord>,
33 pub multi_column_uniques: Vec<MultiColumnUniqueEntryMeta>,
34 pub foreign_keys: Vec<ForeignKeyView>,
35}
36
37#[derive(Clone, Debug)]
39pub struct TableConstraintSummaryView {
40 pub table_meta: Option<TableMeta>,
41 pub column_metas: Vec<Option<ColMeta>>,
42 pub constraint_records: Vec<ConstraintRecord>,
43 pub multi_column_uniques: Vec<MultiColumnUniqueEntryMeta>,
44}