Skip to main content

lenso_migrate/
lib.rs

1use anyhow::Context as _;
2use platform_core::{AppConfig, apply_migrations, connect_pool, telemetry};
3use tracing::info;
4
5pub async fn run_from_env() -> anyhow::Result<()> {
6    run_from_env_with_composition(lenso_bootstrap::HostComposition::default()).await
7}
8
9pub async fn run_from_env_with_composition(
10    composition: lenso_bootstrap::HostComposition,
11) -> anyhow::Result<()> {
12    let config = AppConfig::try_from_env().context("invalid application configuration")?;
13    telemetry::init(&config.telemetry)?;
14
15    let pool = connect_pool(&config.database).await?;
16    let migrations = collect_migrations(&config, &composition)?;
17    info!(count = migrations.len(), "applying migrations");
18    apply_migrations(&pool, &migrations).await?;
19
20    Ok(())
21}
22
23fn collect_migrations(
24    config: &AppConfig,
25    composition: &lenso_bootstrap::HostComposition,
26) -> platform_core::AppResult<Vec<platform_core::Migration>> {
27    lenso_bootstrap::migrations_for_config_with_composition(config, composition)
28}