pub struct AddColumnRequest {
pub name: String,
pub iceberg_type: String,
pub required: bool,
pub initial_default: Option<serde_json::Value>,
pub write_default: Option<serde_json::Value>,
pub doc: Option<String>,
}
pub struct RenameColumnRequest {
pub old_name: String,
pub new_name: String,
}
#[derive(Default)]
pub struct SchemaEvolution {
pub renames: Vec<RenameColumnRequest>,
pub adds: Vec<AddColumnRequest>,
}
impl SchemaEvolution {
pub fn new() -> Self {
Self::default()
}
pub fn add_column(mut self, req: AddColumnRequest) -> Self {
self.adds.push(req);
self
}
pub fn rename_column(
mut self,
old_name: impl Into<String>,
new_name: impl Into<String>,
) -> Self {
self.renames.push(RenameColumnRequest {
old_name: old_name.into(),
new_name: new_name.into(),
});
self
}
}