MCPcopy Create free account
hub / github.com/cloudwan/gohan / addToFilter

Function addToFilter

db/sql/sql.go:1296–1338  ·  view source on GitHub ↗
(s *schema.Schema, q sq.SelectBuilder, filter interface{}, join bool, sqlizer []sq.Sqlizer)

Source from the content-addressed store, hash-verified

1294}
1295
1296func addToFilter(s *schema.Schema, q sq.SelectBuilder, filter interface{}, join bool, sqlizer []sq.Sqlizer) ([]sq.Sqlizer, error) {
1297 filters := filter.([]map[string]interface{})
1298 for _, filter := range filters {
1299 if match, ok := filter[OrCondition]; ok {
1300 res, err := addOrToQuery(s, q, match, join)
1301 if err != nil {
1302 return nil, err
1303 }
1304 sqlizer = append(sqlizer, res)
1305 } else if match, ok := filter[AndCondition]; ok {
1306 res, err := addAndToQuery(s, q, match, join)
1307 if err != nil {
1308 return nil, err
1309 }
1310 sqlizer = append(sqlizer, res)
1311 } else {
1312 key := filter["property"].(string)
1313 property, err := s.GetPropertyByID(key)
1314 if err != nil {
1315 return nil, err
1316 }
1317
1318 var column string
1319 if join {
1320 column = makeColumn(s.GetDbTableName(), *property)
1321 } else {
1322 column = quote(key)
1323 }
1324
1325 // TODO: add other operators
1326 value := filter["value"]
1327 switch filter["type"] {
1328 case "eq":
1329 sqlizer = append(sqlizer, sq.Eq{column: value})
1330 case "neq":
1331 sqlizer = append(sqlizer, sq.NotEq{column: value})
1332 default:
1333 panic("type has to be one of [eq, neq]")
1334 }
1335 }
1336 }
1337 return sqlizer, nil
1338}
1339
1340//SetMaxOpenConns limit maximum connections
1341func (db *DB) SetMaxOpenConns(maxIdleConns int) {

Callers 2

addOrToQueryFunction · 0.85
addAndToQueryFunction · 0.85

Calls 6

addOrToQueryFunction · 0.85
addAndToQueryFunction · 0.85
makeColumnFunction · 0.85
GetPropertyByIDMethod · 0.80
GetDbTableNameMethod · 0.80
quoteFunction · 0.70

Tested by

no test coverage detected