package models import ( "github.com/sujit-baniya/fiber-boilerplate/app" "gorm.io/gorm" ) // TelegramConfig almacena un bot configurado con su chat_id de destino. type TelegramConfig struct { gorm.Model Nombre string `json:"nombre" gorm:"column:nombre;not null"` BotToken string `json:"bot_token" gorm:"column:bot_token;type:text;not null"` ChatID string `json:"chat_id" gorm:"column:chat_id;not null"` // puede ser número o @canal Activo bool `json:"activo" gorm:"column:activo;default:true"` Notas string `json:"notas" gorm:"column:notas;type:text"` } func (TelegramConfig) TableName() string { return "telegram_configs" } // TelegramLog registra cada mensaje enviado. type TelegramLog struct { gorm.Model TelegramConfigID uint `json:"telegram_config_id" gorm:"column:telegram_config_id;index"` TelegramConfig TelegramConfig `json:"telegram_config" gorm:"foreignKey:TelegramConfigID"` Titulo string `json:"titulo" gorm:"column:titulo"` Mensaje string `json:"mensaje" gorm:"column:mensaje;type:text"` Estado string `json:"estado" gorm:"column:estado"` // ok | failed ErrorMsg string `json:"error_msg" gorm:"column:error_msg;type:text"` } func (TelegramLog) TableName() string { return "telegram_logs" } // ─── Queries ────────────────────────────────────────────────────────────────── func GetAllTelegramConfigs() ([]TelegramConfig, error) { var items []TelegramConfig err := app.Http.Database.DB.Order("created_at DESC").Find(&items).Error return items, err } func GetTelegramConfigByID(id uint) (*TelegramConfig, error) { var item TelegramConfig err := app.Http.Database.DB.First(&item, id).Error return &item, err } func CreateTelegramConfig(c *TelegramConfig) error { return app.Http.Database.DB.Create(c).Error } func UpdateTelegramConfig(c *TelegramConfig) error { return app.Http.Database.DB.Model(&TelegramConfig{}).Where("id = ?", c.ID).Updates(map[string]interface{}{ "nombre": c.Nombre, "bot_token": c.BotToken, "chat_id": c.ChatID, "activo": c.Activo, "notas": c.Notas, }).Error } func DeleteTelegramConfig(id uint) error { return app.Http.Database.DB.Delete(&TelegramConfig{}, id).Error } func GetTelegramLogs(limit, offset int) ([]TelegramLog, int64, error) { var items []TelegramLog var total int64 db := app.Http.Database.DB.Model(&TelegramLog{}).Preload("TelegramConfig") if err := db.Count(&total).Error; err != nil { return nil, 0, err } if err := db.Order("created_at DESC").Limit(limit).Offset(offset).Find(&items).Error; err != nil { return nil, 0, err } return items, total, nil } func CreateTelegramLog(l *TelegramLog) error { return app.Http.Database.DB.Create(l).Error }