mobc-sqlx 2.0.0

SQLx support for the mobc connection pool
Documentation
use mobc::{Pool, async_trait};
use sqlx::{
    Database,
    migrate::{Migrate, Migrator},
};

use crate::SqlxConnectionManager;

#[async_trait]
pub trait SqlxMigrationExt<DB>
where
    DB: Database + Sync,
    <DB as Database>::Connection: Migrate,
{
    async fn migrate(
        &self,
        migrator: &Migrator,
    ) -> Result<(), mobc::Error<sqlx::Error>>;
}

#[async_trait]
impl<DB> SqlxMigrationExt<DB> for Pool<SqlxConnectionManager<DB>>
where
    DB: Database + Sync,
    <DB as Database>::Connection: Migrate,
{
    async fn migrate(
        &self,
        migrator: &Migrator,
    ) -> Result<(), mobc::Error<sqlx::Error>> {
        let mut connection = self.get().await?;

        migrator
            .run_direct(&mut *connection)
            .await
            .map_err(sqlx::Error::from)?;

        Ok(())
    }
}