| 333 | } |
| 334 | |
| 335 | func resolveByDB(dbItem *gorm.DB, values map[string]interface{}, beforeFunctions []functionInfo) { |
| 336 | for _, funcs := range beforeFunctions { |
| 337 | for key, value := range values { |
| 338 | if funcs.InputValue != key { |
| 339 | continue |
| 340 | } |
| 341 | var names []string |
| 342 | if funcs.IsList { |
| 343 | sql := fmt.Sprintf("SELECT %s FROM %s where %s in (?);", funcs.OutputColumn, funcs.DB, funcs.InputColumn) |
| 344 | _ = dbItem.Raw(sql, value).Scan(&names) |
| 345 | } else { |
| 346 | sql := fmt.Sprintf("select %s from %s where %s = ?;", funcs.OutputColumn, funcs.DB, funcs.InputColumn) |
| 347 | _ = dbItem.Raw(sql, value).Scan(&names) |
| 348 | } |
| 349 | values[funcs.OutputValue] = strings.Join(names, ",") |
| 350 | break |
| 351 | } |
| 352 | } |
| 353 | } |
| 354 | |
| 355 | func replaceStr(val string, rep ...string) string { |
| 356 | for _, item := range rep { |