package models import ( "time" "github.com/sujit-baniya/fiber-boilerplate/app" "gorm.io/gorm" ) type Modules struct { gorm.Model // Embedding gorm.Model to inherit fields like ID, CreatedAt, UpdatedAt, DeletedAt ID uint `gorm:"primarykey"` ModifiedAt time.Time `json:"modified_at" gorm:"column:modified_at"` // Specify the DB column name Description string `json:"description" gorm:"column:description"` // Specify the DB column name Title string `json:"title" gorm:"column:title"` // Specify the DB column name Submodules []Submodules `json:"submodules" gorm:"foreignKey:ModuleId"` } // TableName overrides the table name used by Modules to `modules` func (Modules) TableName() string { return "modules" } // AllModules recupera todos los módulos con búsqueda func AllModules(limit, offset int, search string) ([]Modules, int64, error) { var modules []Modules var total int64 db := app.Http.Database.DB.Model(&Modules{}) // 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).Find(&modules).Error; err != nil { return nil, 0, err } return modules, total, nil } // AllRolesSelect recupera todos los roles sin paginación func AllModulesSelect() ([]Modules, error) { var modules []Modules // Realizar la consulta para obtener todos los roles if err := app.Http.Database.DB.Model(&Modules{}).Preload("Submodules").Find(&modules).Error; err != nil { return nil, err } return modules, nil } // CreateModule creates a new module func CreateModule(module Modules) error { if err := app.Http.Database.DB.Create(&module).Error; err != nil { return err } return nil } // UpdateModule updates an existing module func UpdateModule(module Modules) error { if err := app.Http.Database.DB.Save(&module).Error; err != nil { return err } return nil } // DeleteModule deletes a module by its ID func DeleteModule(id uint) error { if err := app.Http.Database.DB.Delete(&Modules{}, id).Error; err != nil { return err } return nil } func AllModulesWithSubmodules() ([]Modules, error) { var modules []Modules if err := app.Http.Database.DB.Model(&Modules{}).Preload("Submodules").Find(&modules).Error; err != nil { return nil, err } return modules, nil }