reifydb_core/interface/catalog/
table.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, TableId},
8	value::encoded::EncodedValuesNamedLayout,
9};
10
11#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
12pub struct TableDef {
13	pub id: TableId,
14	pub namespace: NamespaceId,
15	pub name: String,
16	pub columns: Vec<ColumnDef>,
17	pub primary_key: Option<PrimaryKeyDef>,
18}
19
20impl From<&TableDef> for EncodedValuesNamedLayout {
21	fn from(value: &TableDef) -> Self {
22		value.columns.as_slice().into()
23	}
24}