headwaters_client/nodeid.rs
1//! Build the `nodeId` strings the lineage graph addresses nodes by.
2//!
3//! A nodeId is `<kind>:<namespace>:<name>` for jobs and datasets, or
4//! `datasetField:<namespace>:<name>:<field>` for a column. Pass the result to
5//! [`get_lineage`](crate::HeadwatersClient::get_lineage) /
6//! [`get_column_lineage`](crate::HeadwatersClient::get_column_lineage), or read
7//! one off a [`SearchResult`](crate::SearchResult) / [`LineageNode`](crate::LineageNode).
8
9/// The nodeId for a job: `job:<namespace>:<name>`.
10pub fn job_node_id(namespace: &str, name: &str) -> String {
11 format!("job:{namespace}:{name}")
12}
13
14/// The nodeId for a dataset: `dataset:<namespace>:<name>`.
15pub fn dataset_node_id(namespace: &str, name: &str) -> String {
16 format!("dataset:{namespace}:{name}")
17}
18
19/// The nodeId for a dataset field: `datasetField:<namespace>:<dataset>:<field>`.
20pub fn dataset_field_node_id(namespace: &str, dataset: &str, field: &str) -> String {
21 format!("datasetField:{namespace}:{dataset}:{field}")
22}