package models import ( "time" "github.com/sujit-baniya/fiber-boilerplate/app" "gorm.io/gorm" ) type Submodules struct { gorm.Model // Hereda campos como ID, CreatedAt, UpdatedAt, DeletedAt ModifiedAt time.Time `json:"modified_at" gorm:"column:modified_at"` Description string `json:"description" gorm:"column:description"` Title string `json:"title" gorm:"column:title"` Url string `json:"url" gorm:"column:url"` ModuleId uint `json:"module_id" gorm:"column:module_id"` // ID del módulo Module Modules `json:"module" gorm:"foreignKey:ModuleId"` // Módulo al que pertenece Roles []Roles `gorm:"many2many:roles_submodules"` } // TableName overrides the table name used by Modulos to `modules` func (Submodules) TableName() string { return "submodules" } // AllModules recupera todos los módulos con búsqueda func AllSubmodules(limit, offset int, search string) ([]Submodules, int64, error) { var submodules []Submodules var total int64 db := app.Http.Database.DB.Model(&Submodules{}) // Filtrar por término de búsqueda si se proporciona if search != "" { db = db.Where("title LIKE ? OR description LIKE ?", "%"+search+"%", "%"+search+"%") } // Obtener el total de módulos if err := db.Count(&total).Error; err != nil { return nil, 0, err } // Obtener los módulos con paginación if err := db.Order("created_at DESC").Limit(limit).Offset(offset).Preload("Module").Preload("Roles").Find(&submodules).Error; err != nil { return nil, 0, err } return submodules, total, nil } // Allsubmodulesselect recupera todos los roles sin paginación func AllSubmodulesSelect() ([]Submodules, error) { var submodules []Submodules // Realizar la consulta para obtener todos los roles if err := app.Http.Database.DB.Model(&Submodules{}).Find(&submodules).Error; err != nil { return nil, err } return submodules, nil } // CreateModule creates a new module func CreateSubmodule(submodule Submodules) error { if err := app.Http.Database.DB.Create(&submodule).Error; err != nil { return err } return nil } // UpdateModule updates an existing module func UpdateSubmodule(submodule Submodules) error { if err := app.Http.Database.DB.Save(&submodule).Error; err != nil { return err } return nil } // DeleteModule deletes a module by its ID func DeleteSumodule(id uint) error { if err := app.Http.Database.DB.Delete(&Submodules{}, id).Error; err != nil { return err } return nil }