use sea_orm_migration::sea_orm::{ConnectionTrait, Database};
#[tokio::main]
async fn main() {
let _ = dotenvy::dotenv();
let schema = std::env::var("CORE_SCHEMA").unwrap_or_else(|_| memoir_core::migration::DEFAULT_SCHEMA.to_owned());
bootstrap_schema(&schema).await;
if std::env::var_os("DATABASE_SCHEMA").is_none() {
unsafe { std::env::set_var("DATABASE_SCHEMA", &schema) };
}
sea_orm_migration::cli::run_cli(memoir_core::migration::Migrator).await;
}
async fn bootstrap_schema(schema: &str) {
let url = std::env::var("DATABASE_URL").unwrap_or_else(|_| {
panic!("DATABASE_URL must be set for memoir-core migrations");
});
let db = Database::connect(&url)
.await
.unwrap_or_else(|err| panic!("failed to connect for schema bootstrap: {err}"));
db.execute_unprepared(&format!("CREATE SCHEMA IF NOT EXISTS {schema}"))
.await
.unwrap_or_else(|err| panic!("failed to create schema {schema}: {err}"));
db.close()
.await
.unwrap_or_else(|err| panic!("failed to close bootstrap connection: {err}"));
}