package query import ( "gorm.io/gorm" ) type ProductFilter struct { Name string `form:"name"` RefNumber string `form:"ref_number"` SKU string `form:"sku"` Status string `form:"status"` ClientID string `form:"client_id"` CategoryID string `form:"category_id"` PerPage int `form:"per_page"` Page int `form:"page"` } func ApplyProductFilters(db *gorm.DB, filter ProductFilter) *gorm.DB { if filter.Name != "" { db = db.Where("name ILIKE ?", "%"+filter.Name+"%") } if filter.RefNumber != "" { db = db.Where("ref_number ILIKE ?", "%"+filter.RefNumber+"%") } if filter.SKU != "" { db = db.Where("sku ILIKE ?", "%"+filter.SKU+"%") } if filter.Status != "" { db = db.Where("status = ?", filter.Status) } if filter.ClientID != "" { db = db.Where("client_id = ?", filter.ClientID) } if filter.CategoryID != "" { db = db.Where("category_id = ?", filter.CategoryID) } return db }