package query import ( "github.com/Caknoooo/go-gin-clean-starter/database/entities" "github.com/Caknoooo/go-pagination" "gorm.io/gorm" ) type M_Role struct { ID string `json:"id"` Name string `json:"name"` Permissions []entities.M_Permissions `json:"permissions" gorm:"many2many:m_role_permissions;joinForeignKey:RoleID;JoinReferences:PermissionID"` ClientID string `json:"client_id"` } type RoleFilter struct { pagination.BaseFilter Name string `form:"name"` // tambahkan ini ClientID string `form:"client_id"` // tambahkan ini } func (f *RoleFilter) ApplyFilters(query *gorm.DB) *gorm.DB { // Apply your filters here if f.Name != "" { query = query.Where("name ILIKE ?", "%"+f.Name+"%") } if f.ClientID != "" { query = query.Where("client_id = ?", f.ClientID) } return query } func (f *RoleFilter) GetTableName() string { return "m_roles" } func (f *RoleFilter) GetSearchFields() []string { return []string{"name"} } func (f *RoleFilter) GetDefaultSort() string { return "id asc" } func (f *RoleFilter) GetIncludes() []string { return f.Includes } func (f *RoleFilter) GetPagination() pagination.PaginationRequest { return f.Pagination } func (f *RoleFilter) Validate() { var validIncludes []string allowedIncludes := f.GetAllowedIncludes() for _, include := range f.Includes { if allowedIncludes[include] { validIncludes = append(validIncludes, include) } } f.Includes = validIncludes } func (f *RoleFilter) GetAllowedIncludes() map[string]bool { return map[string]bool{} }