feat: seed módulo Servidores con ConexiónDB, SSH, Query Runner y catálogos

This commit is contained in:
Lizandro Guarnizo
2026-05-01 12:25:21 -05:00
parent 80beec57a8
commit 92ac8419fe
2 changed files with 78 additions and 0 deletions
+1
View File
@@ -57,6 +57,7 @@ func main() {
migrations.SeedRenovaciones()
migrations.SeedIntegraciones()
migrations.SeedPasarelas()
migrations.SeedServidores()
// Iniciar cron de vencimientos
services.IniciarCron()
defer services.DetenerCron()
+77
View File
@@ -319,3 +319,80 @@ func SeedPasarelas() {
log.Println("[SEED] Seed de Pasarelas completado.")
}
// SeedServidores crea el módulo "Servidores" con los submódulos de gestión
// de servidores, conexiones SSH/DB, tipos y el Query Runner. Es idempotente.
func SeedServidores() {
db := app.Http.Database.DB
// 1. Crear/obtener módulo
var modulo models.Modules
if err := db.Where("title = ?", "Servidores").First(&modulo).Error; err != nil {
modulo = models.Modules{
Title: "Servidores",
Description: "Gestión de servidores, conexiones de base de datos y Query Runner",
ModifiedAt: time.Now(),
}
if err := db.Create(&modulo).Error; err != nil {
log.Printf("[SEED] Error creando módulo Servidores: %v", err)
return
}
log.Printf("[SEED] Módulo 'Servidores' creado con ID %d", modulo.ID)
} else {
log.Printf("[SEED] Módulo 'Servidores' ya existe (ID %d)", modulo.ID)
}
// 2. Definir submódulos
entries := []struct{ title, desc, url string }{
{"Servidores", "Lista y gestión de servidores registrados", "/app/servidor"},
{"Conexión DB", "Conexiones de base de datos a servidores", "/app/conexion_db"},
{"Conexión SSH", "Conexiones SSH a servidores", "/app/conexion_ssh"},
{"Tipo DB", "Catálogo de tipos de base de datos", "/app/tipo_db"},
{"Tipo Servidor", "Catálogo de tipos de servidor", "/app/tipo_servidor"},
{"Proveedor Servidor", "Catálogo de proveedores de servidor", "/app/prov_servidor"},
{"Query Runner", "Editor SQL con historial y exportación", "/app/query-runner"},
}
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 {
if sub.ModuleId != modulo.ID {
db.Model(&sub).Update("module_id", modulo.ID)
log.Printf("[SEED] Submódulo '%s' reasignado a módulo Servidores", sub.Title)
} else {
log.Printf("[SEED] Submódulo '%s' ya existe (ID %d)", sub.Title, sub.ID)
}
}
insertados = append(insertados, sub)
}
// 3. Asignar a todos los roles existentes
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ódulos al rol '%s': %v", rol.Name, err)
} else {
log.Printf("[SEED] Submódulos de Servidores asignados al rol '%s'", rol.Name)
}
}
log.Println("[SEED] Seed de Servidores completado.")
}