wms-be/modules/permissions/query/permissions_query.go

50 lines
1.2 KiB
Go

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
}