migratex 0.2.2

Agnostic migration toolkit library.
Documentation
use async_trait::async_trait;
use migratex::Migration;
use okerr::Result;

use crate::context::MigContext;

pub struct M2Something;

#[async_trait]
impl Migration<MigContext> for M2Something {
    fn version(&self) -> i32 {
        2
    }

    async fn up(&self, ctx: &mut MigContext) -> Result<()> {
        println!(
            "UP: M2Something. Version {} / Context: {:?}\n",
            self.version(),
            ctx
        );

        ctx.foo += " + foo from M2Something";
        ctx.bar += " + bar from M2Something";

        Ok(())
    }

    async fn down(&self, ctx: &mut MigContext) -> Result<()> {
        println!(
            "DOWN: M2Something. Version {} / Context: {:?}\n",
            self.version(),
            ctx
        );

        ctx.foo = ctx.foo.replace(" + foo from M2Something", "").to_string();
        ctx.bar = ctx.bar.replace(" + bar from M2Something", "").to_string();

        Ok(())
    }
}