mod context;
mod metadata;
mod migrations;
use migratex::Migratex;
use okerr::Result;
use context::MigContext;
use metadata::CustomMetadata;
use migrations::migrations;
#[tokio::main]
async fn main() -> Result<()> {
let file_path = std::path::Path::new("metadata.json");
let mut ctx = MigContext {
foo: "foo from custom_store example".to_string(),
bar: "bar from custom_store example".to_string(),
};
let mut meta = CustomMetadata::load_or_init(file_path)?;
println!("Initial context: {:?}\n", &ctx);
println!("Initial metadata: {:?}\n", meta);
let migs = migrations();
let mut mx = Migratex::new(&mut ctx, &mut meta, migs);
mx.migrate_to_latest().await?;
println!("Final context: {:?}\n", ctx);
println!("Final metadata: {:?}\n", meta);
meta.save(file_path)?;
println!("Final metadata saved to {:?}", file_path);
println!("Done!");
Ok(())
}