mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-06-22 06:53:54 +08:00
30 lines
551 B
Go
30 lines
551 B
Go
package validators
|
|
|
|
import (
|
|
"yunion.io/x/jsonutils"
|
|
"yunion.io/x/sqlchemy"
|
|
)
|
|
|
|
type ModelFilterOptions struct {
|
|
Key string
|
|
ModelKeyword string
|
|
ProjectId string
|
|
}
|
|
|
|
func ApplyModelFilters(q *sqlchemy.SQuery, data *jsonutils.JSONDict, opts []*ModelFilterOptions) (*sqlchemy.SQuery, error) {
|
|
var err error
|
|
for _, opt := range opts {
|
|
v := NewModelIdOrNameValidator(
|
|
opt.Key,
|
|
opt.ModelKeyword,
|
|
opt.ProjectId,
|
|
)
|
|
v.Optional(true)
|
|
q, err = v.QueryFilter(q, data)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return q, nil
|
|
}
|