reifydb_client/domain/frame/
mod.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the MIT, see license.md file
3
4use std::ops::{Deref, Index};
5
6use serde::{Deserialize, Serialize};
7
8mod column;
9mod display;
10
11pub use column::FrameColumn;
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct Frame {
15	#[serde(default)]
16	pub row_numbers: Vec<u64>,
17	#[serde(default)]
18	pub columns: Vec<FrameColumn>,
19}
20
21impl Deref for Frame {
22	type Target = [FrameColumn];
23
24	fn deref(&self) -> &Self::Target {
25		&self.columns
26	}
27}
28
29impl Index<usize> for Frame {
30	type Output = FrameColumn;
31
32	fn index(&self, index: usize) -> &Self::Output {
33		self.columns.index(index)
34	}
35}
36
37impl Frame {
38	pub fn new(row_numbers: Vec<u64>, columns: Vec<FrameColumn>) -> Self {
39		Self {
40			row_numbers,
41			columns,
42		}
43	}
44}