use crate::migrations::MigrationWriter;
use welds_connections::Syntax;
#[derive(Default)]
pub struct Steps {
inner: Vec<Box<dyn MigrationWriter>>,
}
impl Steps {
pub fn new() -> Self {
Steps::default()
}
pub fn add<M: 'static + MigrationWriter>(mut self, step: M) -> Self {
self.inner.push(Box::new(step));
self
}
}
impl MigrationWriter for Steps {
fn up_sql(&self, syntax: Syntax) -> Vec<String> {
self.inner.iter().flat_map(|s| s.up_sql(syntax)).collect()
}
fn down_sql(&self, syntax: Syntax) -> Vec<String> {
self.inner.iter().flat_map(|s| s.down_sql(syntax)).collect()
}
}