Documentation
#![doc = r" GeekORM Database Migrations"]
#![allow(unused_imports, unused_variables)]
use geekorm::prelude::*;
mod v0_3_3;
mod v0_5_0;
pub use v0_5_0::{Database, Migration as LatestMigration};
#[doc = "Initializes and automatically migrates database."]
pub async fn init<'a, T>(connection: &'a T) -> Result<(), geekorm::Error>
where
    T: geekorm::GeekConnection<Connection = T> + 'a,
{
    let latest = &LatestMigration;
    match latest.validate_database(connection, &Database).await {
        Ok(MigrationState::Initialized) => {
            LatestMigration::create(connection).await?;
        }
        Ok(MigrationState::UpToDate) => {}
        Ok(MigrationState::OutOfDate(_)) => {
            return Err(geekorm::Error::Unknown);
        }
        Err(err) => {
            return Err(err);
        }
    }
    Ok(())
}