Files
2026-04-29 23:36:30 -05:00

49 lines
1.5 KiB
Go

package models
import (
"github.com/sujit-baniya/fiber-boilerplate/app"
"gorm.io/gorm"
)
type SmtpConfig struct {
gorm.Model
Host string `json:"host" gorm:"column:host"`
Port int `json:"port" gorm:"column:port;default:587"`
Username string `json:"username" gorm:"column:username"`
Password string `json:"password" gorm:"column:password"` // cifrado AES
Encryption string `json:"encryption" gorm:"column:encryption;default:'tls'"`
FromAddress string `json:"from_address" gorm:"column:from_address"`
FromName string `json:"from_name" gorm:"column:from_name"`
Activo bool `json:"activo" gorm:"column:activo;default:true"`
}
func (SmtpConfig) TableName() string { return "smtp_config" }
func GetSmtpConfig() (*SmtpConfig, error) {
var item SmtpConfig
if err := app.Http.Database.DB.Where("activo = ?", true).First(&item).Error; err != nil {
return nil, err
}
return &item, nil
}
func SaveSmtpConfig(s SmtpConfig) error {
// Desactivar config previa
app.Http.Database.DB.Model(&SmtpConfig{}).Where("activo = ?", true).
Update("activo", false)
s.Activo = true
if s.ID > 0 {
return app.Http.Database.DB.Model(&s).Updates(map[string]interface{}{
"host": s.Host,
"port": s.Port,
"username": s.Username,
"password": s.Password,
"encryption": s.Encryption,
"from_address": s.FromAddress,
"from_name": s.FromName,
"activo": true,
}).Error
}
return app.Http.Database.DB.Create(&s).Error
}