From 5373cebf9cd2a1510085a614fba5680001b34821 Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Mon, 25 May 2026 20:20:50 -0500 Subject: [PATCH] fix: coolify_configs table missing + miniwebs real status MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add coolify_config.go model (missing from worktree branch) - Add CoolifyConfig to normal-startup AutoMigrate → creates table on next start - Fix miniwebs tab: m.activo is not in API response; fallback to vcard.estado (true/false) to show real status instead of always Inactiva - Improve miniwebs row: show url, user name, vcard status badge Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- main.go | 2 ++ pkg/models/coolify_config.go | 54 ++++++++++++++++++++++++++++++++++ resources/views/vcard_api.html | 29 ++++++++++++++---- 3 files changed, 80 insertions(+), 5 deletions(-) create mode 100644 pkg/models/coolify_config.go diff --git a/main.go b/main.go index c74db22..b40cc8e 100755 --- a/main.go +++ b/main.go @@ -79,6 +79,8 @@ func main() { &models.PortalPasswordResetToken{}, // Integración VCard API Admin &models.VcardApiConfig{}, + // Integración Coolify + &models.CoolifyConfig{}, // Servidores: nuevos campos de agente + tabla join de integraciones &models.Servidor{}, &models.ConxDb{}, diff --git a/pkg/models/coolify_config.go b/pkg/models/coolify_config.go new file mode 100644 index 0000000..da584e4 --- /dev/null +++ b/pkg/models/coolify_config.go @@ -0,0 +1,54 @@ +package models + +import ( + "github.com/sujit-baniya/fiber-boilerplate/app" + "gorm.io/gorm" +) + +// CoolifyConfig almacena las credenciales para la API REST de Coolify. +// Coolify expone su API en {base_url}/api/v1 con Bearer token. +type CoolifyConfig struct { + gorm.Model + Nombre string `json:"nombre" gorm:"column:nombre;not null"` + BaseURL string `json:"base_url" gorm:"column:base_url;type:text;not null"` + ApiToken string `json:"api_token" gorm:"column:api_token;type:text;not null"` + Activo bool `json:"activo" gorm:"column:activo;default:true"` +} + +func (CoolifyConfig) TableName() string { return "coolify_configs" } + +func GetCoolifyConfig() (*CoolifyConfig, error) { + var cfg CoolifyConfig + if err := app.Http.Database.DB.First(&cfg).Error; err != nil { + return nil, err + } + return &cfg, nil +} + +func UpsertCoolifyConfig(nombre, baseURL, apiToken string, activo bool) (*CoolifyConfig, error) { + var cfg CoolifyConfig + err := app.Http.Database.DB.First(&cfg).Error + if err != nil { + // No existe → crear + cfg = CoolifyConfig{ + Nombre: nombre, + BaseURL: baseURL, + ApiToken: apiToken, + Activo: activo, + } + if createErr := app.Http.Database.DB.Create(&cfg).Error; createErr != nil { + return nil, createErr + } + return &cfg, nil + } + cfg.Nombre = nombre + cfg.BaseURL = baseURL + if apiToken != "" { + cfg.ApiToken = apiToken + } + cfg.Activo = activo + if err := app.Http.Database.DB.Save(&cfg).Error; err != nil { + return nil, err + } + return &cfg, nil +} diff --git a/resources/views/vcard_api.html b/resources/views/vcard_api.html index 697cb0e..f0b519d 100644 --- a/resources/views/vcard_api.html +++ b/resources/views/vcard_api.html @@ -440,12 +440,31 @@