This commit is contained in:
Lizandro Guarnizo
2026-05-06 15:44:51 -05:00
parent 1a8cc92a22
commit 048ebf5d70
4 changed files with 365 additions and 30 deletions
+58
View File
@@ -95,6 +95,9 @@ func Migrate() {
// Insertar submódulo "Pasarelas de Pago" en el módulo Integraciones
SeedPasarelas()
// Insertar submódulos de SaaS (Productos + Integraciones) en el módulo Integraciones
SeedSaas()
log.Println("Migration Completed...")
}
@@ -476,3 +479,58 @@ func SeedAdministracion() {
log.Println("[SEED] Seed de Administración completado.")
}
// SeedSaas agrega los submódulos de gestión de productos SaaS e integraciones
// de pago al módulo "Integraciones" ya existente. Es idempotente.
func SeedSaas() {
db := app.Http.Database.DB
// Reutilizar el módulo "Integraciones" (creado por 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 SeedSaas: %v", err)
return
}
entries := []struct{ title, desc, url string }{
{"Productos SaaS", "Gestión de productos SaaS y su documentación asociada", "/app/saas"},
{"Integraciones SaaS", "Callbacks de pago hacia APIs externas y logs de despacho", "/app/saas-api"},
}
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ódulos SaaS al rol '%s': %v", rol.Name, err)
} else {
log.Printf("[SEED] Submódulos SaaS asignados al rol '%s'", rol.Name)
}
}
log.Println("[SEED] Seed de SaaS completado.")
}