package models import ( "time" "github.com/sujit-baniya/fiber-boilerplate/app" "gorm.io/gorm" ) type Roles struct { gorm.Model ID uint `gorm:"primarykey"` CreatedAt time.Time `json:"created_at" gorm:"column:created_at"` Description string `json:"description" gorm:"column:description"` Name string `json:"name" gorm:"column:name"` Submodules []Submodules `json:"submodules" gorm:"many2many:roles_submodules"` // Asegúrate de que Submodules esté definido } // TableName overrides the table name used by Modules to `modules` func (Roles) TableName() string { return "roles" } // AllModules recupera todos los módulos con búsqueda func AllRoles(limit, offset int, search string) ([]Roles, int64, error) { var roles []Roles var total int64 db := app.Http.Database.DB.Model(&Roles{}) // Filtrar por término de búsqueda si se proporciona if search != "" { db = db.Where("name 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("id DESC").Limit(limit).Offset(offset).Preload("Submodules").Find(&roles).Error; err != nil { return nil, 0, err } return roles, total, nil } // AllRolesSelect recupera todos los roles sin paginación func AllRolesSelect() ([]Roles, error) { var roles []Roles // Realizar la consulta para obtener todos los roles if err := app.Http.Database.DB.Model(&Roles{}).Find(&roles).Error; err != nil { return nil, err } return roles, nil } // CreateModule creates a new rol func CreateRole(role Roles) error { if err := app.Http.Database.DB.Create(&role).Error; err != nil { return err } return nil } // UpdateModule updates an existing module func UpdateRole(role Roles) error { if err := app.Http.Database.DB.Save(&role).Error; err != nil { return err } return nil } // DeleteModule deletes a module by its ID func DeleteRole(id uint) error { if err := app.Http.Database.DB.Delete(&Roles{}, id).Error; err != nil { return err } return nil } func FindRoleByName(name string) (Roles, error) { var role Roles if err := app.Http.Database.DB.Where("name = ?", name).First(&role).Error; err != nil { return role, err } return role, nil }