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 @@