use super::{gather_comments::TotalHarvest, intermediate::IntermediateSchema};
pub fn filter_harvested_by_schema_comparison(
harvest: &mut TotalHarvest,
schema: &IntermediateSchema,
) {
harvest
.tables
.retain(|table_name, _| schema.tables.contains_key(table_name));
for (table_name, table) in &mut harvest.tables {
let schema_table = schema.tables.get(table_name).unwrap();
if let Some(doc_comment) = &table.doc_comment {
if !schema_table.comment.is_empty() && schema_table.comment == doc_comment.comment {
table.doc_comment = None;
}
}
table.columns.retain(|col_name, column| {
let Some(schema_column) = schema_table.columns.iter().find(|c| c.name == *col_name)
else {
return false; };
let Some(doc_comment) = &column.doc_comment else {
return true; };
schema_column.comment.is_empty() || schema_column.comment != doc_comment.comment
});
}
harvest.tables.retain(|_, table| {
table.doc_comment.is_some() || table.columns.values().any(|col| col.doc_comment.is_some())
});
}