use springtime::application;
use springtime::future::{BoxFuture, FutureExt};
use springtime_di::instance_provider::ErrorPtr;
use springtime_di::{component_alias, Component};
use springtime_migrate_refinery::config::{MigrationConfig, MigrationConfigProvider};
#[derive(Component)]
#[component(constructor = "MyMigrationConfigProvider::new")]
struct MyMigrationConfigProvider {
#[component(ignore)]
config: MigrationConfig,
}
impl MyMigrationConfigProvider {
fn new() -> BoxFuture<'static, Result<Self, ErrorPtr>> {
async {
let mut config = MigrationConfig::default();
config.abort_missing = false;
Ok(Self { config })
}
.boxed()
}
}
#[component_alias]
impl MigrationConfigProvider for MyMigrationConfigProvider {
fn config(&self) -> BoxFuture<'_, Result<&MigrationConfig, ErrorPtr>> {
async { Ok(&self.config) }.boxed()
}
}
#[tokio::main]
async fn main() {
let mut application = application::create_default().expect("unable to create application");
application.run().await.expect("error running application");
}