reifydb_core/value/column/
frame.rs1use reifydb_type::value::frame::{column::FrameColumn, data::FrameColumnData, frame::Frame};
5
6use crate::value::column::{Column, ColumnData, columns::Columns};
7
8impl From<ColumnData> for FrameColumnData {
9 fn from(value: ColumnData) -> Self {
10 match value {
11 ColumnData::Bool(container) => FrameColumnData::Bool(container),
12 ColumnData::Float4(container) => FrameColumnData::Float4(container),
13 ColumnData::Float8(container) => FrameColumnData::Float8(container),
14 ColumnData::Int1(container) => FrameColumnData::Int1(container),
15 ColumnData::Int2(container) => FrameColumnData::Int2(container),
16 ColumnData::Int4(container) => FrameColumnData::Int4(container),
17 ColumnData::Int8(container) => FrameColumnData::Int8(container),
18 ColumnData::Int16(container) => FrameColumnData::Int16(container),
19 ColumnData::Uint1(container) => FrameColumnData::Uint1(container),
20 ColumnData::Uint2(container) => FrameColumnData::Uint2(container),
21 ColumnData::Uint4(container) => FrameColumnData::Uint4(container),
22 ColumnData::Uint8(container) => FrameColumnData::Uint8(container),
23 ColumnData::Uint16(container) => FrameColumnData::Uint16(container),
24 ColumnData::Utf8 {
25 container,
26 ..
27 } => FrameColumnData::Utf8(container),
28 ColumnData::Date(container) => FrameColumnData::Date(container),
29 ColumnData::DateTime(container) => FrameColumnData::DateTime(container),
30 ColumnData::Time(container) => FrameColumnData::Time(container),
31 ColumnData::Duration(container) => FrameColumnData::Duration(container),
32 ColumnData::IdentityId(container) => FrameColumnData::IdentityId(container),
33 ColumnData::Uuid4(container) => FrameColumnData::Uuid4(container),
34 ColumnData::Uuid7(container) => FrameColumnData::Uuid7(container),
35 ColumnData::Blob {
36 container,
37 ..
38 } => FrameColumnData::Blob(container),
39 ColumnData::Int {
40 container,
41 ..
42 } => FrameColumnData::Int(container),
43 ColumnData::Uint {
44 container,
45 ..
46 } => FrameColumnData::Uint(container),
47 ColumnData::Decimal {
48 container,
49 ..
50 } => FrameColumnData::Decimal(container),
51 ColumnData::Any(container) => FrameColumnData::Any(container),
52 ColumnData::DictionaryId(container) => FrameColumnData::DictionaryId(container),
53 ColumnData::Option {
54 inner,
55 bitvec,
56 } => FrameColumnData::Option {
57 inner: Box::new(FrameColumnData::from(*inner)),
58 bitvec,
59 },
60 }
61 }
62}
63
64impl From<Column> for FrameColumn {
65 fn from(value: Column) -> Self {
66 FrameColumn {
67 name: value.name.to_string(),
68 data: value.data.into(),
69 }
70 }
71}
72
73impl From<Columns> for Frame {
74 fn from(columns: Columns) -> Self {
75 let frame_columns: Vec<FrameColumn> = columns.columns.into_iter().map(|col| col.into()).collect();
76 if !columns.row_numbers.is_empty() {
77 Frame::with_row_numbers(frame_columns, columns.row_numbers.to_vec())
78 } else {
79 Frame::new(frame_columns)
80 }
81 }
82}