package models import ( "time" "github.com/sujit-baniya/fiber-boilerplate/app" "gorm.io/gorm" ) // ClienteDocumento almacena los archivos adjuntos de un cliente. type ClienteDocumento struct { gorm.Model ClienteID uint `json:"cliente_id" gorm:"column:cliente_id;not null;index"` Nombre string `json:"nombre" gorm:"column:nombre"` // nombre descriptivo del doc Archivo string `json:"archivo" gorm:"column:archivo"` // ruta relativa en disco OriginalName string `json:"original_name" gorm:"column:original_name"` // nombre original del archivo TipoMime string `json:"tipo_mime" gorm:"column:tipo_mime"` Tamanio int64 `json:"tamanio" gorm:"column:tamanio"` // bytes FechaExpedicion *time.Time `json:"fecha_expedicion" gorm:"column:fecha_expedicion"` // opcional } func (ClienteDocumento) TableName() string { return "cliente_documentos" } func GetDocumentosByCliente(clienteID uint) ([]ClienteDocumento, error) { var items []ClienteDocumento err := app.Http.Database.DB. Where("cliente_id = ?", clienteID). Order("created_at DESC"). Find(&items).Error return items, err } func CreateClienteDocumento(d *ClienteDocumento) error { return app.Http.Database.DB.Create(d).Error } func GetClienteDocumentoByID(id uint) (*ClienteDocumento, error) { var d ClienteDocumento if err := app.Http.Database.DB.First(&d, id).Error; err != nil { return nil, err } return &d, nil } func DeleteClienteDocumento(id uint) error { return app.Http.Database.DB.Delete(&ClienteDocumento{}, id).Error }