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