wms-be/modules/user/query/user_query.go

69 lines
1.5 KiB
Go

package query
import (
"github.com/Caknoooo/go-pagination"
"gorm.io/gorm"
)
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
TelpNumber string `json:"telp_number"`
Role string `json:"role"`
ImageUrl string `json:"image_url"`
IsVerified bool `json:"is_verified"`
}
type UserFilter struct {
pagination.BaseFilter
Name string `form:"name"` // tambahkan ini
TenantID string `form:"tenant_id"` // tambahkan ini
}
func (f *UserFilter) ApplyFilters(query *gorm.DB) *gorm.DB {
// Apply your filters here
if f.Name != "" {
query = query.Where("name ILIKE ?", "%"+f.Name+"%")
}
if f.TenantID != "" {
query = query.Where("tenant_id = ?", f.TenantID)
}
return query
}
func (f *UserFilter) GetTableName() string {
return "users"
}
func (f *UserFilter) GetSearchFields() []string {
return []string{"name"}
}
func (f *UserFilter) GetDefaultSort() string {
return "id asc"
}
func (f *UserFilter) GetIncludes() []string {
return f.Includes
}
func (f *UserFilter) GetPagination() pagination.PaginationRequest {
return f.Pagination
}
func (f *UserFilter) Validate() {
var validIncludes []string
allowedIncludes := f.GetAllowedIncludes()
for _, include := range f.Includes {
if allowedIncludes[include] {
validIncludes = append(validIncludes, include)
}
}
f.Includes = validIncludes
}
func (f *UserFilter) GetAllowedIncludes() map[string]bool {
return map[string]bool{}
}