reifydb_core/value/frame/
frame.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 std::ops::{Deref, Index};
5
6use reifydb_type::RowNumber;
7use serde::{Deserialize, Serialize};
8
9use crate::FrameColumn;
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
12pub struct Frame {
13	pub row_numbers: Vec<RowNumber>,
14	pub columns: Vec<FrameColumn>,
15}
16
17impl Deref for Frame {
18	type Target = [FrameColumn];
19
20	fn deref(&self) -> &Self::Target {
21		&self.columns
22	}
23}
24
25impl Index<usize> for Frame {
26	type Output = FrameColumn;
27
28	fn index(&self, index: usize) -> &Self::Output {
29		self.columns.index(index)
30	}
31}
32
33impl Frame {
34	pub fn new(columns: Vec<FrameColumn>) -> Self {
35		Self {
36			row_numbers: Vec::new(),
37			columns,
38		}
39	}
40
41	pub fn with_row_numbers(columns: Vec<FrameColumn>, row_numbers: Vec<RowNumber>) -> Self {
42		Self {
43			row_numbers,
44			columns,
45		}
46	}
47}