diff --git a/crates/erp-server/migration/src/lib.rs b/crates/erp-server/migration/src/lib.rs index b9d5b58..08dadd7 100644 --- a/crates/erp-server/migration/src/lib.rs +++ b/crates/erp-server/migration/src/lib.rs @@ -123,6 +123,7 @@ mod m20260505_000120_create_ai_knowledge_rules; mod m20260505_000121_create_ai_knowledge_references; mod m20260505_000122_create_ai_knowledge_guides; mod m20260505_000123_update_ai_prompts_system_instruction; +mod m20260505_000124_freeze_deferred_menus; pub struct Migrator; @@ -253,6 +254,7 @@ impl MigratorTrait for Migrator { Box::new(m20260505_000121_create_ai_knowledge_references::Migration), Box::new(m20260505_000122_create_ai_knowledge_guides::Migration), Box::new(m20260505_000123_update_ai_prompts_system_instruction::Migration), + Box::new(m20260505_000124_freeze_deferred_menus::Migration), ] } } diff --git a/crates/erp-server/migration/src/m20260505_000124_freeze_deferred_menus.rs b/crates/erp-server/migration/src/m20260505_000124_freeze_deferred_menus.rs new file mode 100644 index 0000000..f46ecf5 --- /dev/null +++ b/crates/erp-server/migration/src/m20260505_000124_freeze_deferred_menus.rs @@ -0,0 +1,63 @@ +//! 冻结推迟模块的菜单 — 将 visible 设为 false + +use sea_orm_migration::prelude::*; + +#[derive(DeriveMigrationName)] +pub struct Migration; + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + let db = manager.get_connection(); + + let frozen_paths = [ + "/health/care-plans", + "/health/shifts", + "/health/family-proxy", + "/health/medications", + "/health/dialysis", + "/health/schedules", + "/health/appointments", + ]; + + for path in &frozen_paths { + db.execute(sea_orm::Statement::from_string( + sea_orm::DatabaseBackend::Postgres, + format!( + "UPDATE menus SET visible = false WHERE path = '{}'", + path + ), + )) + .await?; + } + + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + let db = manager.get_connection(); + + let frozen_paths = [ + "/health/care-plans", + "/health/shifts", + "/health/family-proxy", + "/health/medications", + "/health/dialysis", + "/health/schedules", + "/health/appointments", + ]; + + for path in &frozen_paths { + db.execute(sea_orm::Statement::from_string( + sea_orm::DatabaseBackend::Postgres, + format!( + "UPDATE menus SET visible = true WHERE path = '{}'", + path + ), + )) + .await?; + } + + Ok(()) + } +}