vars.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package gen
  2. import (
  3. "fmt"
  4. "sort"
  5. "strings"
  6. "github.com/zeromicro/go-zero/core/collection"
  7. "github.com/zeromicro/go-zero/tools/goctl/model/sql/template"
  8. "github.com/zeromicro/go-zero/tools/goctl/util"
  9. "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
  10. "github.com/zeromicro/go-zero/tools/goctl/util/stringx"
  11. )
  12. func genVars(table Table, withCache, postgreSql bool) (string, error) {
  13. keys := make([]string, 0)
  14. keys = append(keys, table.PrimaryCacheKey.VarExpression)
  15. for _, v := range table.UniqueCacheKey {
  16. keys = append(keys, v.VarExpression)
  17. }
  18. camel := table.Name.ToCamel()
  19. text, err := pathx.LoadTemplate(category, varTemplateFile, template.Vars)
  20. if err != nil {
  21. return "", err
  22. }
  23. output, err := util.With("var").Parse(text).
  24. GoFmt(true).Execute(map[string]any{
  25. "lowerStartCamelObject": stringx.From(camel).Untitle(),
  26. "upperStartCamelObject": camel,
  27. "cacheKeys": strings.Join(keys, "\n"),
  28. "autoIncrement": table.PrimaryKey.AutoIncrement,
  29. "originalPrimaryKey": wrapWithRawString(table.PrimaryKey.Name.Source(), postgreSql),
  30. "withCache": withCache,
  31. "postgreSql": postgreSql,
  32. "data": table,
  33. "ignoreColumns": func() string {
  34. var set = collection.NewSet()
  35. for _, c := range table.ignoreColumns {
  36. if postgreSql {
  37. set.AddStr(fmt.Sprintf(`"%s"`, c))
  38. } else {
  39. set.AddStr(fmt.Sprintf("\"`%s`\"", c))
  40. }
  41. }
  42. list := set.KeysStr()
  43. sort.Strings(list)
  44. return strings.Join(list, ", ")
  45. }(),
  46. })
  47. if err != nil {
  48. return "", err
  49. }
  50. return output.String(), nil
  51. }