reifydb_core/interface/catalog/
view.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the AGPL-3.0-or-later, see license.md file
3
4use 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}