delete.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package gen
  2. import (
  3. "sort"
  4. "strings"
  5. "github.com/zeromicro/go-zero/core/collection"
  6. "github.com/zeromicro/go-zero/tools/goctl/model/sql/template"
  7. "github.com/zeromicro/go-zero/tools/goctl/util"
  8. "github.com/zeromicro/go-zero/tools/goctl/util/pathx"
  9. "github.com/zeromicro/go-zero/tools/goctl/util/stringx"
  10. )
  11. func genDelete(table Table, withCache, postgreSql bool) (string, string, error) {
  12. keySet := collection.NewSet()
  13. keyVariableSet := collection.NewSet()
  14. keySet.AddStr(table.PrimaryCacheKey.KeyExpression)
  15. keyVariableSet.AddStr(table.PrimaryCacheKey.KeyLeft)
  16. for _, key := range table.UniqueCacheKey {
  17. keySet.AddStr(key.DataKeyExpression)
  18. keyVariableSet.AddStr(key.KeyLeft)
  19. }
  20. keys := keySet.KeysStr()
  21. sort.Strings(keys)
  22. keyVars := keyVariableSet.KeysStr()
  23. sort.Strings(keyVars)
  24. camel := table.Name.ToCamel()
  25. text, err := pathx.LoadTemplate(category, deleteTemplateFile, template.Delete)
  26. if err != nil {
  27. return "", "", err
  28. }
  29. output, err := util.With("delete").
  30. Parse(text).
  31. Execute(map[string]interface{}{
  32. "upperStartCamelObject": camel,
  33. "withCache": withCache,
  34. "containsIndexCache": table.ContainsUniqueCacheKey,
  35. "lowerStartCamelPrimaryKey": util.EscapeGolangKeyword(stringx.From(table.PrimaryKey.Name.ToCamel()).Untitle()),
  36. "dataType": table.PrimaryKey.DataType,
  37. "keys": strings.Join(keys, "\n"),
  38. "originalPrimaryKey": wrapWithRawString(table.PrimaryKey.Name.Source(), postgreSql),
  39. "keyValues": strings.Join(keyVars, ", "),
  40. "postgreSql": postgreSql,
  41. "data": table,
  42. })
  43. if err != nil {
  44. return "", "", err
  45. }
  46. // interface method
  47. text, err = pathx.LoadTemplate(category, deleteMethodTemplateFile, template.DeleteMethod)
  48. if err != nil {
  49. return "", "", err
  50. }
  51. deleteMethodOut, err := util.With("deleteMethod").
  52. Parse(text).
  53. Execute(map[string]interface{}{
  54. "lowerStartCamelPrimaryKey": util.EscapeGolangKeyword(stringx.From(table.PrimaryKey.Name.ToCamel()).Untitle()),
  55. "dataType": table.PrimaryKey.DataType,
  56. "data": table,
  57. })
  58. if err != nil {
  59. return "", "", err
  60. }
  61. return output.String(), deleteMethodOut.String(), nil
  62. }