81 lines
2.9 KiB
Go
81 lines
2.9 KiB
Go
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
|
|
}
|