package query import ( "github.com/Caknoooo/go-gin-clean-starter/database/entities" "github.com/Caknoooo/go-gin-clean-starter/modules/permissions/dto" "github.com/Caknoooo/go-pagination" "github.com/google/uuid" "gorm.io/gorm" ) type M_Permissions struct { ID uuid.UUID `json:"id" gorm:"column:id"` Name string `json:"name" gorm:"column:name"` MenuID uuid.UUID `json:"menu_id" gorm:"column:menu_id"` Menu dto.Menu `json:"menu" gorm:"foreignKey:MenuID;references:ID"` } type PermissionsFilter struct { pagination.BaseFilter Name string `form:"name"` MenuID string `form:"menu_id"` } func (f *PermissionsFilter) ApplyFilters(q *gorm.DB) *gorm.DB { if f.Name != "" { q = q.Where("name ILIKE ?", "%"+f.Name+"%") } if f.MenuID != "" { q = q.Where("menu_id = ?", f.MenuID) } q = q.Model(entities.M_Permissions{}).Preload("Menu") return q } func (f *PermissionsFilter) GetTableName() string { return "m_permissions" } func (f *PermissionsFilter) GetSearchFields() []string { return []string{"name"} } func (f *PermissionsFilter) GetDefaultSort() string { return "id asc" } func (f *PermissionsFilter) GetPagination() pagination.PaginationRequest { return f.Pagination }