use sea_orm_migration::{MigrationTrait, MigratorTrait};

/// Assembled migrator for the bitrouter binary.
///
/// Collects migrations from all crates that contribute database schema.
pub struct Migrator;

impl MigratorTrait for Migrator {
    fn migrations() -> Vec<Box<dyn MigrationTrait>> {
        let mut all = Vec::new();
        all.extend(bitrouter_accounts::migration::migrations());
        all.extend(bitrouter_observe::migration::migrations());
        all
    }
}

/// Run all pending migrations against the given database connection.
pub async fn migrate(db: &sea_orm::DatabaseConnection) -> Result<(), sea_orm::DbErr> {
    Migrator::up(db, None).await
}