package query import ( "gorm.io/gorm" ) type CategoryFilter struct { Name string `form:"name"` SearchKey string `form:"search_key"` ClientID string `form:"client_id"` IsActive *bool `form:"is_active"` PerPage int `form:"per_page"` Page int `form:"page"` } func ApplyCategoryFilters(db *gorm.DB, filter CategoryFilter) *gorm.DB { if filter.Name != "" { db = db.Where("name ILIKE ?", "%"+filter.Name+"%") } if filter.SearchKey != "" { db = db.Where("search_key ILIKE ?", "%"+filter.SearchKey+"%") } if filter.ClientID != "" { db = db.Where("client_id = ?", filter.ClientID) } if filter.IsActive != nil { db = db.Where("is_active = ?", *filter.IsActive) } return db }