use serde_json::{Map, Value};
use crate::error::MigrateError;
use crate::step::StepCx;
pub(super) fn dedupe_group_by(
view: &mut Map<String, Value>,
cx: &mut StepCx,
) -> Result<(), MigrateError> {
let Some(Value::Array(group_by)) = view.get_mut("group_by") else {
return Ok(());
};
let mut seen = vec![];
let mut dropped = vec![];
group_by.retain(|column| {
if seen.contains(column) {
dropped.push(column.clone());
false
} else {
seen.push(column.clone());
true
}
});
for column in dropped {
cx.dropped(&["group_by"], column);
}
Ok(())
}