findonebyfield.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package gen
  2. import (
  3. "fmt"
  4. "strings"
  5. "github.com/tal-tech/go-zero/tools/goctl/model/sql/template"
  6. "github.com/tal-tech/go-zero/tools/goctl/util"
  7. "github.com/tal-tech/go-zero/tools/goctl/util/stringx"
  8. )
  9. func genFindOneByField(table Table, withCache bool) (string, string, error) {
  10. text, err := util.LoadTemplate(category, findOneByFieldTemplateFile, template.FindOneByField)
  11. if err != nil {
  12. return "", "", err
  13. }
  14. t := util.With("findOneByField").Parse(text)
  15. var list []string
  16. camelTableName := table.Name.ToCamel()
  17. for _, field := range table.Fields {
  18. if field.IsPrimaryKey || !field.IsUniqueKey {
  19. continue
  20. }
  21. camelFieldName := field.Name.ToCamel()
  22. output, err := t.Execute(map[string]interface{}{
  23. "upperStartCamelObject": camelTableName,
  24. "upperField": camelFieldName,
  25. "in": fmt.Sprintf("%s %s", stringx.From(camelFieldName).UnTitle(), field.DataType),
  26. "withCache": withCache,
  27. "cacheKey": table.CacheKey[field.Name.Source()].KeyExpression,
  28. "cacheKeyVariable": table.CacheKey[field.Name.Source()].Variable,
  29. "lowerStartCamelObject": stringx.From(camelTableName).UnTitle(),
  30. "lowerStartCamelField": stringx.From(camelFieldName).UnTitle(),
  31. "upperStartCamelPrimaryKey": table.PrimaryKey.Name.ToCamel(),
  32. "originalField": field.Name.Source(),
  33. })
  34. if err != nil {
  35. return "", "", err
  36. }
  37. list = append(list, output.String())
  38. }
  39. if withCache {
  40. text, err := util.LoadTemplate(category, findOneByFieldExtraMethodTemplateFile, template.FindOneByFieldExtraMethod)
  41. if err != nil {
  42. return "", "", err
  43. }
  44. out, err := util.With("findOneByFieldExtraMethod").Parse(text).Execute(map[string]interface{}{
  45. "upperStartCamelObject": camelTableName,
  46. "primaryKeyLeft": table.CacheKey[table.PrimaryKey.Name.Source()].Left,
  47. "lowerStartCamelObject": stringx.From(camelTableName).UnTitle(),
  48. "originalPrimaryField": table.PrimaryKey.Name.Source(),
  49. })
  50. if err != nil {
  51. return "", "", err
  52. }
  53. return strings.Join(list, "\n"), out.String(), nil
  54. }
  55. return strings.Join(list, "\n"), "", nil
  56. }