package models import ( "log" "github.com/sujit-baniya/fiber-boilerplate/app" "gorm.io/gorm" ) type OssApi struct { gorm.Model Name string `gorm:"size:100;not null" json:"name"` // Alias o nombre interno Provider string `gorm:"size:20;default:alibaba" json:"provider"` // alibaba | s3 Endpoint string `gorm:"not null" json:"endpoint"` // Endpoint del access point AccessKeyID string `gorm:"not null" json:"access_key_id"` // Access Key ID AccessKeySecret string `gorm:"not null" json:"access_key_secret"` // Access Key Secret BucketName string `gorm:"not null" json:"bucket_name"` // Nombre del bucket o access point Region string `gorm:"size:50" json:"region"` // Región, opcional IsActive bool `gorm:"default:true" json:"is_active"` // Activar o desactivar config Notes string `gorm:"type:text" json:"notes"` } // TableName asegura que GORM use la tabla 'qrvcard' func (OssApi) TableName() string { return "oss_api" } // GetAllQrVcard obtiene todos los registros de QrVcard con paginación y búsqueda func GetAllOssApi(limit, offset int, search string) ([]OssApi, int64, error) { var items []OssApi var total int64 db := app.Http.Database.DB.Model(&OssApi{}) // Si se pasa un término de búsqueda, lo aplicamos en la consulta if search != "" { db = db.Where("name LIKE ?", "%"+search+"%") } // Contamos el total de registros if err := db.Count(&total).Error; err != nil { log.Printf("Error counting OssApi: %v", err) return nil, 0, err } // Obtenemos los registros con paginación if err := db.Order("id DESC").Limit(limit).Offset(offset).Find(&items).Error; err != nil { log.Printf("Error retrieving OssApi: %v", err) return nil, 0, err } return items, total, nil } // CreateQrVcard crea un nuevo registro de QrVcard en la base de datos func CreateOssApi(OssApi *OssApi) error { if err := app.Http.Database.DB.Create(&OssApi).Error; err != nil { return err } return nil } // UpdateQrVcard actualiza un registro de QrVcard existente func UpdateOssApi(OssApi *OssApi) error { if err := app.Http.Database.DB.Model(&OssApi).Updates(OssApi).Error; err != nil { return err } return nil } // DeleteQrVcard elimina un registro de QrVcard de la base de datos func DeleteOssApi(OssApi *OssApi) error { if err := app.Http.Database.DB.Delete(&OssApi).Error; err != nil { return err } return nil } // GetOssApiByID obtiene un registro por ID func GetOssApiByID(id uint) (*OssApi, error) { var item OssApi err := app.Http.Database.DB.First(&item, id).Error if err != nil { return nil, err } return &item, nil } // GetActiveOssApis obtiene todas las configuraciones activas func GetActiveOssApis() ([]OssApi, error) { var items []OssApi err := app.Http.Database.DB.Where("is_active = ?", true).Order("id DESC").Find(&items).Error return items, err } // GetLastActiveOssApi obtiene el último registro activo func GetLastActiveOssApi() (*OssApi, error) { var ossConfig OssApi err := app.Http.Database.DB. Where("is_active = ?", true). Order("id DESC"). First(&ossConfig).Error if err != nil { return nil, err } return &ossConfig, nil }