llkv_table/
view.rs

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/// Read-only view describing a resolved foreign key constraint.
9#[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// TODO: Rename!
28/// Read-only snapshot aggregating table metadata used by runtime consumers.
29#[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<MultiColumnUniqueEntryMeta>,
35    pub foreign_keys: Vec<ForeignKeyView>,
36}
37
38/// Constraint-oriented snapshot without foreign key data.
39#[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<MultiColumnUniqueEntryMeta>,
45}