From d09346cee7ac8e05b22e0611939c8366b9c65c18 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 7 May 2026 16:30:26 -0500 Subject: [PATCH] Update migrate.go --- migrations/migrate.go | 57 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/migrations/migrate.go b/migrations/migrate.go index 9056703..357d8d6 100755 --- a/migrations/migrate.go +++ b/migrations/migrate.go @@ -98,9 +98,66 @@ func Migrate() { // Insertar submódulos de SaaS (Productos + Integraciones) en el módulo Integraciones SeedSaas() + // Insertar submódulo "Statuspage" en el módulo Integraciones + SeedStatuspage() + log.Println("Migration Completed...") } +// SeedStatuspage agrega el submódulo "Statuspage" (Atlassian) al módulo "Integraciones" +// y lo asigna a todos los roles. Es idempotente. +func SeedStatuspage() { + db := app.Http.Database.DB + + // Obtener el módulo "Integraciones" (debe existir luego de SeedIntegraciones) + var modulo models.Modules + if err := db.Where("title = ?", "Integraciones").First(&modulo).Error; err != nil { + log.Printf("[SEED] Módulo 'Integraciones' no encontrado para SeedStatuspage: %v", err) + return + } + + entries := []struct{ title, desc, url string }{ + {"Statuspage", "Monitoreo de estado de servicios vía Atlassian Statuspage", "/app/statuspage"}, + } + + var insertados []models.Submodules + for _, e := range entries { + var sub models.Submodules + if err := db.Where("url = ?", e.url).First(&sub).Error; err != nil { + sub = models.Submodules{ + Title: e.title, + Description: e.desc, + Url: e.url, + ModuleId: modulo.ID, + ModifiedAt: time.Now(), + } + if err := db.Create(&sub).Error; err != nil { + log.Printf("[SEED] Error creando submódulo '%s': %v", e.title, err) + continue + } + log.Printf("[SEED] Submódulo '%s' creado (ID %d)", e.title, sub.ID) + } else { + log.Printf("[SEED] Submódulo '%s' ya existe (ID %d)", sub.Title, sub.ID) + } + insertados = append(insertados, sub) + } + + var roles []models.Roles + if err := db.Find(&roles).Error; err != nil { + log.Printf("[SEED] Error obteniendo roles: %v", err) + return + } + for _, rol := range roles { + if err := db.Model(&rol).Association("Submodules").Append(&insertados); err != nil { + log.Printf("[SEED] Error asignando submódulo Statuspage al rol '%s': %v", rol.Name, err) + } else { + log.Printf("[SEED] Submódulo Statuspage asignado al rol '%s'", rol.Name) + } + } + + log.Println("[SEED] Seed de Statuspage completado.") +} + // MigrateRenovaciones crea/actualiza las tablas del módulo de Renovaciones. // Es idempotente: GORM AutoMigrate solo añade columnas/tablas nuevas, nunca las borra. func MigrateRenovaciones() {