findallbylimit.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package gen
  2. import (
  3. "bytes"
  4. "strings"
  5. "text/template"
  6. sqltemplate "github.com/tal-tech/go-zero/tools/goctl/model/sql/template"
  7. )
  8. func genFindLimitByField(table *InnerTable) (string, error) {
  9. t, err := template.New("findLimitByField").Parse(sqltemplate.FindLimitByField)
  10. if err != nil {
  11. return "", err
  12. }
  13. list := make([]string, 0)
  14. for _, field := range table.Fields {
  15. if field.IsPrimaryKey {
  16. continue
  17. }
  18. if field.QueryType != QueryLimit {
  19. continue
  20. }
  21. fineOneByFieldBuffer := new(bytes.Buffer)
  22. upperFields := make([]string, 0)
  23. in := make([]string, 0)
  24. expressionFields := make([]string, 0)
  25. expressionValuesFields := make([]string, 0)
  26. upperFields = append(upperFields, field.UpperCamelCase)
  27. in = append(in, field.LowerCamelCase+" "+field.DataType)
  28. expressionFields = append(expressionFields, field.SnakeCase+" = ?")
  29. expressionValuesFields = append(expressionValuesFields, field.LowerCamelCase)
  30. for _, withField := range field.WithFields {
  31. upperFields = append(upperFields, withField.UpperCamelCase)
  32. in = append(in, withField.LowerCamelCase+" "+withField.DataType)
  33. expressionFields = append(expressionFields, withField.SnakeCase+" = ?")
  34. expressionValuesFields = append(expressionValuesFields, withField.LowerCamelCase)
  35. }
  36. sortList := make([]string, 0)
  37. for _, item := range field.Sort {
  38. var sort = "ASC"
  39. if !item.Asc {
  40. sort = "DESC"
  41. }
  42. sortList = append(sortList, item.Field.SnakeCase+" "+sort)
  43. }
  44. err = t.Execute(fineOneByFieldBuffer, map[string]interface{}{
  45. "in": strings.Join(in, ","),
  46. "upperObject": table.UpperCamelCase,
  47. "upperFields": strings.Join(upperFields, "And"),
  48. "lowerObject": table.LowerCamelCase,
  49. "expression": strings.Join(expressionFields, " AND "),
  50. "expressionValues": strings.Join(expressionValuesFields, ", "),
  51. "sortExpression": strings.Join(sortList, ","),
  52. "containsCache": table.ContainsCache,
  53. })
  54. if err != nil {
  55. return "", err
  56. }
  57. list = append(list, fineOneByFieldBuffer.String())
  58. }
  59. return strings.Join(list, ""), nil
  60. }