Skip to content

Commit

Permalink
refactor: col default
Browse files Browse the repository at this point in the history
  • Loading branch information
apskhem committed Mar 11, 2024
1 parent bba51f6 commit 7c99a74
Showing 1 changed file with 17 additions and 14 deletions.
31 changes: 17 additions & 14 deletions src/analyzer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -267,22 +267,25 @@ pub fn analyze(schema_block: &SchemaBlock) -> AnalyzerResult<AnalyzedIndexer> {
_ => throw_err(Err::InvalidEnum, &col.r#type.span_range, input)?,
};

let (default_enum_span, default_enum) = match &col.settings {
match &col.settings {
Some(ColumnSettings { attributes, default: Some(default_value), .. }) => {
let default_value_span = attributes.iter()
.find_map(|attr| (attr.key.to_string == "default").then(|| attr.value.clone().unwrap().span_range))
.unwrap(); // FIXME: handle unwrap

(default_value_span, vec![default_value.to_string()])
},
_ => (0..0, vec![])
};

match indexer.lookup_enum_values(&enum_schema, &enum_name, &default_enum) {
(false, (_, _)) => throw_err(Err::SchemaNotFound, &col.r#type.span_range, input)?,
(true, (false, _)) => throw_err(Err::EnumNotFound, &col.r#type.span_range, input)?,
(true, (true, f)) if f.iter().any(|f| f == &false) => throw_err(Err::EnumValueNotFound, &default_enum_span, input)?,
_ => ColumnTypeName::Enum(enum_name)
.find_map(|attr| {
(attr.key.to_string == "default").then(|| attr.value.clone().map(|v| v.span_range))
})
.and_then(|opt_span| opt_span)
.unwrap_or_else(|| unreachable!("default value is missing"));

match indexer.lookup_enum_values(&enum_schema, &enum_name, &vec![default_value.to_string()]) {
(false, (_, _)) => throw_err(Err::SchemaNotFound, &col.r#type.span_range, input)?,
(true, (false, _)) => throw_err(Err::EnumNotFound, &col.r#type.span_range, input)?,
(true, (true, f)) if f.iter().any(|f| f == &false) => throw_err(Err::EnumValueNotFound, &default_value_span, input)?,
_ => ColumnTypeName::Enum(enum_name)
}
}
_ => {
ColumnTypeName::Enum(enum_name)
}
}
}
}
Expand Down

0 comments on commit 7c99a74

Please sign in to comment.