Update migrate.go
This commit is contained in:
@@ -98,9 +98,66 @@ func Migrate() {
|
|||||||
// Insertar submódulos de SaaS (Productos + Integraciones) en el módulo Integraciones
|
// Insertar submódulos de SaaS (Productos + Integraciones) en el módulo Integraciones
|
||||||
SeedSaas()
|
SeedSaas()
|
||||||
|
|
||||||
|
// Insertar submódulo "Statuspage" en el módulo Integraciones
|
||||||
|
SeedStatuspage()
|
||||||
|
|
||||||
log.Println("Migration Completed...")
|
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.
|
// MigrateRenovaciones crea/actualiza las tablas del módulo de Renovaciones.
|
||||||
// Es idempotente: GORM AutoMigrate solo añade columnas/tablas nuevas, nunca las borra.
|
// Es idempotente: GORM AutoMigrate solo añade columnas/tablas nuevas, nunca las borra.
|
||||||
func MigrateRenovaciones() {
|
func MigrateRenovaciones() {
|
||||||
|
|||||||
Reference in New Issue
Block a user