use std::borrow::Cow; use sqlx::migrate::Migrator; pub(crate) static STATE_MIGRATOR: Migrator = sqlx::migrate!("./migrations"); pub(crate) static LOGS_MIGRATOR: Migrator = sqlx::migrate!("./logs_migrations"); /// Allow an older Codex binary to open a database that has already been /// migrated by a newer binary running in parallel. /// /// We intentionally ignore applied migration versions that are newer than the /// embedded migration set. Known migration versions are still validated by /// checksum, so this only relaxes the "database is ahead of me" case. fn runtime_migrator(base: &'static Migrator) -> Migrator { Migrator { migrations: Cow::Borrowed(base.migrations.as_ref()), ignore_missing: true, locking: base.locking, no_tx: base.no_tx, } } pub(crate) fn runtime_state_migrator() -> Migrator { runtime_migrator(&STATE_MIGRATOR) } pub(crate) fn runtime_logs_migrator() -> Migrator { runtime_migrator(&LOGS_MIGRATOR) }