reifydb_type/value/frame/
column.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the MIT, see license.md file
3
4use std::ops::Deref;
5
6use serde::{Deserialize, Serialize};
7
8use super::data::FrameColumnData;
9
10#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
11pub struct FrameColumn {
12	pub namespace: Option<String>,
13	pub source: Option<String>,
14	pub name: String,
15	pub data: FrameColumnData,
16}
17
18impl Deref for FrameColumn {
19	type Target = FrameColumnData;
20
21	fn deref(&self) -> &Self::Target {
22		&self.data
23	}
24}
25
26impl FrameColumn {
27	pub fn qualified_name(&self) -> String {
28		match (&self.namespace, &self.source) {
29			(Some(namespace), Some(table)) => {
30				format!("{}.{}.{}", namespace, table, self.name)
31			}
32			(None, Some(table)) => {
33				format!("{}.{}", table, self.name)
34			}
35			_ => self.name.clone(),
36		}
37	}
38}