use springtime::application;
use springtime_di::instance_provider::ErrorPtr;
use springtime_di::{component_alias, Component};
use springtime_migrate_refinery::migration::MigrationSource;
use springtime_migrate_refinery::refinery::Migration;
use std::sync::Arc;
#[derive(Component)]
struct ExampleMigrationSource;
#[component_alias]
impl MigrationSource for ExampleMigrationSource {
fn migrations(&self) -> Result<Vec<Migration>, ErrorPtr> {
Migration::unapplied("V00__test", "CREATE TABLE test (id INTEGER PRIMARY KEY);")
.map(|migration| vec![migration])
.map_err(|error| Arc::new(error) as ErrorPtr)
}
}
#[tokio::main]
async fn main() {
let mut application =
application::create_default().expect("unable to create default application");
application.run().await.expect("error running application");
}