reifydb_core/interface/catalog/
layout.rs1use reifydb_type::Type;
5
6use super::{RingBufferDef, TableDef, ViewDef};
7use crate::value::encoded::{EncodedValuesLayout, EncodedValuesNamedLayout};
8
9pub trait GetEncodedRowLayout {
10 fn get_layout(&self) -> EncodedValuesLayout;
11}
12
13pub trait GetEncodedRowNamedLayout {
14 fn get_named_layout(&self) -> EncodedValuesNamedLayout;
15}
16
17impl GetEncodedRowLayout for TableDef {
18 fn get_layout(&self) -> EncodedValuesLayout {
19 let types: Vec<_> = self.columns.iter().map(|col| col.constraint.get_type()).collect();
20 EncodedValuesLayout::new(&types)
21 }
22}
23
24impl GetEncodedRowLayout for ViewDef {
25 fn get_layout(&self) -> EncodedValuesLayout {
26 let types: Vec<_> = self.columns.iter().map(|col| col.constraint.get_type()).collect();
27 EncodedValuesLayout::new(&types)
28 }
29}
30
31impl GetEncodedRowLayout for RingBufferDef {
32 fn get_layout(&self) -> EncodedValuesLayout {
33 let types: Vec<_> = self.columns.iter().map(|col| col.constraint.get_type()).collect();
34 EncodedValuesLayout::new(&types)
35 }
36}
37
38impl GetEncodedRowNamedLayout for TableDef {
39 fn get_named_layout(&self) -> EncodedValuesNamedLayout {
40 let fields: Vec<(String, Type)> =
41 self.columns.iter().map(|col| (col.name.clone(), col.constraint.get_type())).collect();
42 EncodedValuesNamedLayout::new(fields)
43 }
44}
45
46impl GetEncodedRowNamedLayout for ViewDef {
47 fn get_named_layout(&self) -> EncodedValuesNamedLayout {
48 let fields: Vec<(String, Type)> =
49 self.columns.iter().map(|col| (col.name.clone(), col.constraint.get_type())).collect();
50 EncodedValuesNamedLayout::new(fields)
51 }
52}
53
54impl GetEncodedRowNamedLayout for RingBufferDef {
55 fn get_named_layout(&self) -> EncodedValuesNamedLayout {
56 let fields: Vec<(String, Type)> =
57 self.columns.iter().map(|col| (col.name.clone(), col.constraint.get_type())).collect();
58 EncodedValuesNamedLayout::new(fields)
59 }
60}