use super::debug_observed_table_contracts::{LoggingSchemaObservedTable, ObservedTablesMap};
use super::debug_observed_table_keys::normalize_relation_type;
use super::service::SchemaRelationRecord;
pub(super) fn seed_observed_tables_from_relations(
relations: Vec<SchemaRelationRecord>,
) -> ObservedTablesMap {
let mut observed_map: ObservedTablesMap = ObservedTablesMap::default();
for relation in relations {
observed_map.insert(
relation.key(),
LoggingSchemaObservedTable {
table_schema: relation.table_schema,
table_name: relation.table_name,
relation_type: normalize_relation_type(&relation.relation_type),
columns: Vec::new(),
},
);
}
observed_map
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn seed_observed_tables_from_relations_normalizes_relation_type() {
let relations = vec![SchemaRelationRecord {
table_schema: " public ".to_string(),
table_name: " gateway_request_log ".to_string(),
relation_type: "base table".to_string(),
}];
let map = seed_observed_tables_from_relations(relations);
let table = map
.get("public.gateway_request_log")
.expect("table present");
assert_eq!(table.relation_type, "BASE TABLE");
assert!(table.columns.is_empty());
}
}