From 02b900b62a402ca5bcb54d8a7fa3f5e22ba99236 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 27 Aug 2025 11:12:58 +0000 Subject: [PATCH] all --- backend/windmill-api/src/db.rs | 61 +++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 23 deletions(-) diff --git a/backend/windmill-api/src/db.rs b/backend/windmill-api/src/db.rs index 4337c7be7d..a3a8444d3a 100644 --- a/backend/windmill-api/src/db.rs +++ b/backend/windmill-api/src/db.rs @@ -205,6 +205,38 @@ pub async fn migrate(db: &DB) -> Result>, Error> { let migrator = db.acquire().await?; let mut custom_migrator = CustomMigrator { inner: migrator }; + let is_past_snapshot = sqlx::query_scalar!( + "SELECT EXISTS(SELECT 1 FROM windmill_migrations WHERE name = 'snapshot')" + ) + .fetch_one(db) + .await + .ok() + .flatten() + .unwrap_or(false); + + if !is_past_snapshot { + migrate_up_to_snapshot(db).await?; + }; + + match sqlx::migrate!("../migrations") + .run_direct(&mut custom_migrator) + .await + { + Ok(_) => Ok(()), + Err(sqlx::migrate::MigrateError::VersionMissing(e)) => { + tracing::error!( + "{MORE_MIGRATIONS_MSG} +Version missing: {e:#}" + ); + custom_migrator.unlock().await?; + Ok(()) + } + Err(err) => Err(err), + }?; + Ok(todo!()) +} + +async fn migrate_up_to_snapshot(db: &DB) -> Result<(), Error> { let (has_done_first_old_migration, has_done_latest_old_migration) = sqlx::query!( r#" SELECT @@ -258,7 +290,7 @@ Version missing: {e:#}" } Err(err) => Err(err), }?; - crate::live_migrations::custom_migrations_old(&mut custom_migrator, db).await; + crate::live_migrations::custom_migrations_old(&mut custom_migrator, db).await } else if !has_done_first_old_migration { match sqlx::migrate!("../migrations/old_snapshot") .run_direct(&mut custom_migrator) @@ -267,30 +299,13 @@ Version missing: {e:#}" Ok(_) => Ok(()), Err(err) => Err(err), }?; - sqlx::query!( - "INSERT INTO _sqlx_migrations (version, description, success, checksum, execution_time) - VALUES (20250814114112, 'fake latest old migration', true, '0', 0), - (20220123221901, 'fake first old migration', true, '0', 0)" - ) + }; + tracing::info!("Inserting snapshot migration checkpoint"); + sqlx::query!("INSERT INTO windmill_migrations (name) VALUES ('snapshot')") .execute(db) .await?; - return Ok(None); - }; - match sqlx::migrate!("../migrations") - .run_direct(&mut custom_migrator) - .await - { - Ok(_) => Ok(()), - Err(sqlx::migrate::MigrateError::VersionMissing(e)) => { - tracing::error!( - "{MORE_MIGRATIONS_MSG} -Version missing: {e:#}" - ); - custom_migrator.unlock().await?; - Ok(()) - } - Err(err) => Err(err), - }?; + tracing::info!("Snapshot migration inserted"); + Ok(()) } #[derive(Clone, Debug, Default, Hash, Eq, PartialEq)]