From 1d7bfd35961d4a1bce37db94b0f4596e2959a0e4 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Thu, 30 Jul 2026 09:19:24 -0500 Subject: [PATCH] feat: multi-query/upload .sql en query runner + selector BD por rol --- pkg/models/roles.go | 11 +- pkg/models/users.go | 2 +- resources/views/query_runner.html | 138 +++++++++++++++++++- resources/views/roles.html | 49 ++++++- rest/controllers/query_runner_controller.go | 120 ++++++++++++++++- rest/controllers/roles_controller.go | 29 +++- rest/routes/hermes.go | 1 + rest/routes/user.go | 1 + 8 files changed, 337 insertions(+), 14 deletions(-) diff --git a/pkg/models/roles.go b/pkg/models/roles.go index 50c93a5..8e1159d 100755 --- a/pkg/models/roles.go +++ b/pkg/models/roles.go @@ -17,6 +17,7 @@ type Roles struct { EsPortalCliente bool `json:"es_portal_cliente" gorm:"column:es_portal_cliente;default:false"` EsPortalPartner bool `json:"es_portal_partner" gorm:"column:es_portal_partner;default:false"` Submodules []Submodules `json:"submodules" gorm:"many2many:roles_submodules"` + ConxDBs []ConxDb `json:"conx_dbs" gorm:"many2many:roles_conx_db"` } // TableName overrides the table name used by Modules to `modules` @@ -41,7 +42,7 @@ func AllRoles(limit, offset int, search string) ([]Roles, int64, error) { } // Obtener los módulos con paginación - if err := db.Order("id DESC").Limit(limit).Offset(offset).Preload("Submodules").Find(&roles).Error; err != nil { + if err := db.Order("id DESC").Limit(limit).Offset(offset).Preload("Submodules").Preload("ConxDBs").Find(&roles).Error; err != nil { return nil, 0, err } @@ -62,6 +63,14 @@ func AllRolesSelect() ([]Roles, error) { // CreateModule creates a new rol func CreateRole(role Roles) error { + var conxDbs []ConxDb + for _, db := range role.ConxDBs { + var found ConxDb + if err := app.Http.Database.DB.First(&found, db.ID).Error; err == nil { + conxDbs = append(conxDbs, found) + } + } + role.ConxDBs = conxDbs if err := app.Http.Database.DB.Create(&role).Error; err != nil { return err } diff --git a/pkg/models/users.go b/pkg/models/users.go index 5586003..97523b9 100755 --- a/pkg/models/users.go +++ b/pkg/models/users.go @@ -175,7 +175,7 @@ func FindUserByID(id interface{}) (*Users, error) { db := app.Http.Database.DB.Model(&Users{}) // Buscar el usuario por ID - if err := db.Where("id = ?", id).Preload("Role.Submodules.Module").First(&user).Error; err != nil { + if err := db.Where("id = ?", id).Preload("Role.Submodules.Module").Preload("Role.ConxDBs").First(&user).Error; err != nil { // Manejar el error si el registro no se encuentra if errors.Is(err, gorm.ErrRecordNotFound) { return nil, fmt.Errorf("usuario no encontrado con ID: %d", id) diff --git a/resources/views/query_runner.html b/resources/views/query_runner.html index 4d8d176..74ee195 100644 --- a/resources/views/query_runner.html +++ b/resources/views/query_runner.html @@ -136,6 +136,19 @@ Limpiar + + + + + +