vegafusion_core/spec/transform/
identifier.rs1use crate::expression::column_usage::{ColumnUsage, DatasetsColumnUsage, VlSelectionFields};
2use crate::spec::transform::{TransformColumns, TransformSpecTrait};
3use crate::task_graph::graph::ScopedVariable;
4use crate::task_graph::scope::TaskScope;
5use serde::{Deserialize, Serialize};
6use serde_json::Value;
7use std::collections::HashMap;
8
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
10pub struct IdentifierTransformSpec {
11 #[serde(rename = "as")]
12 pub as_: String,
13
14 #[serde(flatten)]
15 pub extra: HashMap<String, Value>,
16}
17
18impl TransformSpecTrait for IdentifierTransformSpec {
19 fn supported(&self) -> bool {
20 true
21 }
22
23 fn transform_columns(
24 &self,
25 _datum_var: &Option<ScopedVariable>,
26 _usage_scope: &[u32],
27 _task_scope: &TaskScope,
28 _vl_selection_fields: &VlSelectionFields,
29 ) -> TransformColumns {
30 let usage = DatasetsColumnUsage::empty();
31 let produced = ColumnUsage::from(self.as_.as_str());
32 TransformColumns::PassThrough { usage, produced }
33 }
34
35 fn local_datetime_columns_produced(
36 &self,
37 input_local_datetime_columns: &[String],
38 ) -> Vec<String> {
39 Vec::from(input_local_datetime_columns)
42 }
43}