reifydb_core/interface/catalog/
view.rs1use serde::{Deserialize, Serialize};
5
6use crate::{
7 interface::{ColumnDef, NamespaceId, PrimaryKeyDef, ViewId},
8 value::encoded::EncodedValuesNamedLayout,
9};
10
11#[derive(Debug, Clone, Copy, PartialEq, Serialize, Deserialize)]
12pub enum ViewKind {
13 Deferred,
14 Transactional,
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
18pub struct ViewDef {
19 pub id: ViewId,
20 pub namespace: NamespaceId,
21 pub name: String,
22 pub kind: ViewKind,
23 pub columns: Vec<ColumnDef>,
24 pub primary_key: Option<PrimaryKeyDef>,
25}
26
27impl From<&ViewDef> for EncodedValuesNamedLayout {
28 fn from(value: &ViewDef) -> Self {
29 value.columns.as_slice().into()
30 }
31}