Skip to main content

nominal_api/conjure/objects/ingest/api/
csv_opts.rs

1/// Options for ingesting csv files.  Supported file formats include .csv, .csv.gz
2#[derive(
3    Debug,
4    Clone,
5    conjure_object::serde::Serialize,
6    conjure_object::serde::Deserialize,
7    PartialEq,
8    Eq,
9    PartialOrd,
10    Ord,
11    Hash
12)]
13#[serde(crate = "conjure_object::serde")]
14#[conjure_object::private::staged_builder::staged_builder]
15#[builder(crate = conjure_object::private::staged_builder, update, inline)]
16pub struct CsvOpts {
17    #[builder(custom(type = super::IngestSource, convert = Box::new))]
18    #[serde(rename = "source")]
19    source: Box<super::IngestSource>,
20    #[builder(custom(type = super::DatasetIngestTarget, convert = Box::new))]
21    #[serde(rename = "target")]
22    target: Box<super::DatasetIngestTarget>,
23    #[builder(custom(type = super::TimestampMetadata, convert = Box::new))]
24    #[serde(rename = "timestampMetadata")]
25    timestamp_metadata: Box<super::TimestampMetadata>,
26    #[builder(default)]
27    #[serde(rename = "channelPrefix", skip_serializing_if = "Option::is_none", default)]
28    channel_prefix: super::ChannelPrefix,
29    #[builder(default, into)]
30    #[serde(
31        rename = "tagKeysFromColumns",
32        skip_serializing_if = "Option::is_none",
33        default
34    )]
35    tag_keys_from_columns: Option<
36        std::collections::BTreeSet<super::super::super::api::TagName>,
37    >,
38    #[builder(default, into)]
39    #[serde(rename = "tagColumns", skip_serializing_if = "Option::is_none", default)]
40    tag_columns: Option<
41        std::collections::BTreeMap<
42            super::super::super::api::TagName,
43            super::super::super::api::ColumnName,
44        >,
45    >,
46    #[builder(default, into)]
47    #[serde(
48        rename = "additionalFileTags",
49        skip_serializing_if = "Option::is_none",
50        default
51    )]
52    additional_file_tags: Option<
53        std::collections::BTreeMap<
54            super::super::super::api::TagName,
55            super::super::super::api::TagValue,
56        >,
57    >,
58    #[builder(default, set(item(type = super::super::super::api::ColumnName)))]
59    #[serde(
60        rename = "excludeColumns",
61        skip_serializing_if = "std::collections::BTreeSet::is_empty",
62        default
63    )]
64    exclude_columns: std::collections::BTreeSet<super::super::super::api::ColumnName>,
65}
66impl CsvOpts {
67    /// Constructs a new instance of the type.
68    #[inline]
69    pub fn new(
70        source: super::IngestSource,
71        target: super::DatasetIngestTarget,
72        timestamp_metadata: super::TimestampMetadata,
73    ) -> Self {
74        Self::builder()
75            .source(source)
76            .target(target)
77            .timestamp_metadata(timestamp_metadata)
78            .build()
79    }
80    #[inline]
81    pub fn source(&self) -> &super::IngestSource {
82        &*self.source
83    }
84    #[inline]
85    pub fn target(&self) -> &super::DatasetIngestTarget {
86        &*self.target
87    }
88    #[inline]
89    pub fn timestamp_metadata(&self) -> &super::TimestampMetadata {
90        &*self.timestamp_metadata
91    }
92    #[inline]
93    pub fn channel_prefix(&self) -> &super::ChannelPrefix {
94        &self.channel_prefix
95    }
96    #[deprecated(note = "Deprecated in favor of tagColumns.")]
97    #[inline]
98    pub fn tag_keys_from_columns(
99        &self,
100    ) -> Option<&std::collections::BTreeSet<super::super::super::api::TagName>> {
101        self.tag_keys_from_columns.as_ref().map(|o| &*o)
102    }
103    /// A map of tag names to column names to derive the tag values from.
104    #[inline]
105    pub fn tag_columns(
106        &self,
107    ) -> Option<
108        &std::collections::BTreeMap<
109            super::super::super::api::TagName,
110            super::super::super::api::ColumnName,
111        >,
112    > {
113        self.tag_columns.as_ref().map(|o| &*o)
114    }
115    /// Specifies a tag set to apply to all data in the file.
116    #[inline]
117    pub fn additional_file_tags(
118        &self,
119    ) -> Option<
120        &std::collections::BTreeMap<
121            super::super::super::api::TagName,
122            super::super::super::api::TagValue,
123        >,
124    > {
125        self.additional_file_tags.as_ref().map(|o| &*o)
126    }
127    /// A set of column names to exclude from ingestion. These columns will not be
128    /// ingested as channels. Useful for excluding columns that contain unsupported
129    /// data types like multidimensional arrays.
130    #[inline]
131    pub fn exclude_columns(
132        &self,
133    ) -> &std::collections::BTreeSet<super::super::super::api::ColumnName> {
134        &self.exclude_columns
135    }
136}