wms-be/modules/product/query/product_query.go

39 lines
940 B
Go

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
}