mirror of https://github.com/buster-so/buster.git
generate placeholder for description and parser catch
This commit is contained in:
parent
e25b7d6639
commit
ac7ad9cfd1
|
@ -466,7 +466,7 @@ for (unique_id, node) in &dbt_catalog.nodes {
|
|||
}
|
||||
|
||||
// Preserve manual description, otherwise update from catalog if catalog has one.
|
||||
let placeholder_desc = "Description missing - please update.".to_string();
|
||||
let placeholder_desc = "{DESCRIPTION_NEEDED}".to_string();
|
||||
match &existing_model.description {
|
||||
Some(existing_desc) if existing_desc != &placeholder_desc => {
|
||||
// Manual description exists and is not the placeholder, do nothing to preserve it.
|
||||
|
@ -525,7 +525,7 @@ for (unique_id, node) in &dbt_catalog.nodes {
|
|||
}
|
||||
|
||||
// Preserve manual description if Some and not placeholder, otherwise update from catalog.
|
||||
let placeholder_col_desc = "Description missing - please update.".to_string();
|
||||
let placeholder_col_desc = "{DESCRIPTION_NEEDED}.".to_string();
|
||||
match &updated_dim.description {
|
||||
Some(existing_col_desc) if existing_col_desc != &placeholder_col_desc => {
|
||||
// Manual description exists and is not placeholder, do nothing.
|
||||
|
@ -574,7 +574,7 @@ for (unique_id, node) in &dbt_catalog.nodes {
|
|||
}
|
||||
|
||||
// Preserve manual description if Some and not placeholder, otherwise update from catalog.
|
||||
let placeholder_col_desc = "Description missing - please update.".to_string();
|
||||
let placeholder_col_desc = "{DESCRIPTION_NEEDED}.".to_string();
|
||||
match &updated_measure.description {
|
||||
Some(existing_col_desc) if existing_col_desc != &placeholder_col_desc => {
|
||||
// Manual description exists and is not placeholder, do nothing.
|
||||
|
@ -607,13 +607,13 @@ for (unique_id, node) in &dbt_catalog.nodes {
|
|||
if crate::commands::init::is_measure_type(&dbt_col.type_) {
|
||||
current_measures.push(YamlMeasure {
|
||||
name: dbt_col.name.clone(),
|
||||
description: dbt_col.comment.as_ref().filter(|s| !s.is_empty()).cloned().or_else(|| Some("Description missing - please update.".to_string())),
|
||||
description: dbt_col.comment.as_ref().filter(|s| !s.is_empty()).cloned().or_else(|| Some("{DESCRIPTION_NEEDED}.".to_string())),
|
||||
type_: Some(dbt_col.type_.clone())
|
||||
});
|
||||
} else {
|
||||
current_dims.push(YamlDimension {
|
||||
name: dbt_col.name.clone(),
|
||||
description: dbt_col.comment.as_ref().filter(|s| !s.is_empty()).cloned().or_else(|| Some("Description missing - please update.".to_string())),
|
||||
description: dbt_col.comment.as_ref().filter(|s| !s.is_empty()).cloned().or_else(|| Some("{DESCRIPTION_NEEDED}.".to_string())),
|
||||
type_: Some(dbt_col.type_.clone()),
|
||||
searchable: false, // Ensure searchable is false
|
||||
options: None
|
||||
|
@ -640,13 +640,13 @@ for (unique_id, node) in &dbt_catalog.nodes {
|
|||
if crate::commands::init::is_measure_type(&col_meta.type_) { // type_ is String
|
||||
measures.push(YamlMeasure {
|
||||
name: col_meta.name.clone(),
|
||||
description: col_meta.comment.as_ref().filter(|s| !s.is_empty()).cloned().or_else(|| Some("Description missing - please update.".to_string())),
|
||||
description: col_meta.comment.as_ref().filter(|s| !s.is_empty()).cloned().or_else(|| Some("{DESCRIPTION_NEEDED}.".to_string())),
|
||||
type_: Some(col_meta.type_.clone())
|
||||
});
|
||||
} else {
|
||||
dimensions.push(YamlDimension {
|
||||
name: col_meta.name.clone(),
|
||||
description: col_meta.comment.as_ref().filter(|s| !s.is_empty()).cloned().or_else(|| Some("Description missing - please update.".to_string())),
|
||||
description: col_meta.comment.as_ref().filter(|s| !s.is_empty()).cloned().or_else(|| Some("{DESCRIPTION_NEEDED}.".to_string())),
|
||||
type_: Some(col_meta.type_.clone()),
|
||||
searchable: false, // Ensure searchable is false
|
||||
options: None
|
||||
|
|
|
@ -251,6 +251,49 @@ pub async fn parse_models_command(path_arg: Option<String>) -> Result<()> {
|
|||
model_errors.push("schema could not be resolved.".to_string());
|
||||
}
|
||||
|
||||
// Check for placeholder description in the model itself
|
||||
if let Some(desc) = &model.description {
|
||||
if desc.contains("{DESCRIPTION_NEEDED}") {
|
||||
model_errors.push("Model description contains placeholder '{DESCRIPTION_NEEDED}'. Please provide a description.".to_string());
|
||||
}
|
||||
}
|
||||
|
||||
// Check descriptions in dimensions
|
||||
for dimension in &model.dimensions {
|
||||
if let Some(desc) = &dimension.description {
|
||||
if desc.contains("{DESCRIPTION_NEEDED}") {
|
||||
model_errors.push(format!("Dimension '{}' description contains placeholder '{{DESCRIPTION_NEEDED}}'. Please provide a description.", dimension.name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check descriptions in measures
|
||||
for measure in &model.measures {
|
||||
if let Some(desc) = &measure.description {
|
||||
if desc.contains("{DESCRIPTION_NEEDED}") {
|
||||
model_errors.push(format!("Measure '{}' description contains placeholder '{{DESCRIPTION_NEEDED}}'. Please provide a description.", measure.name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check descriptions in metrics
|
||||
for metric in &model.metrics {
|
||||
if let Some(desc) = &metric.description {
|
||||
if desc.contains("{DESCRIPTION_NEEDED}") {
|
||||
model_errors.push(format!("Metric '{}' description contains placeholder '{{DESCRIPTION_NEEDED}}'. Please provide a description.", metric.name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Check descriptions in filters
|
||||
for filter in &model.filters {
|
||||
if let Some(desc) = &filter.description {
|
||||
if desc.contains("{DESCRIPTION_NEEDED}") {
|
||||
model_errors.push(format!("Filter '{}' description contains placeholder '{{DESCRIPTION_NEEDED}}'. Please provide a description.", filter.name));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if !model_errors.is_empty() {
|
||||
progress.errors.push((
|
||||
progress.current_file.clone(),
|
||||
|
|
Loading…
Reference in New Issue