delete.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package gen
  2. import (
  3. "bytes"
  4. "strings"
  5. "text/template"
  6. sqltemplate "zero/tools/goctl/model/sql/template"
  7. )
  8. func genDelete(table *InnerTable) (string, error) {
  9. t, err := template.New("delete").Parse(sqltemplate.Delete)
  10. if err != nil {
  11. return "", nil
  12. }
  13. deleteBuffer := new(bytes.Buffer)
  14. keys := make([]string, 0)
  15. keyValues := make([]string, 0)
  16. for snake, key := range table.CacheKey {
  17. if snake == table.PrimaryField.SnakeCase {
  18. keys = append(keys, key.Key)
  19. } else {
  20. keys = append(keys, key.DataKey)
  21. }
  22. keyValues = append(keyValues, key.KeyVariable)
  23. }
  24. var isOnlyPrimaryKeyCache = true
  25. for _, item := range table.Fields {
  26. if item.IsPrimaryKey {
  27. continue
  28. }
  29. if item.Cache {
  30. isOnlyPrimaryKeyCache = false
  31. break
  32. }
  33. }
  34. err = t.Execute(deleteBuffer, map[string]interface{}{
  35. "upperObject": table.UpperCamelCase,
  36. "containsCache": table.ContainsCache,
  37. "isNotPrimaryKey": !isOnlyPrimaryKeyCache,
  38. "lowerPrimaryKey": table.PrimaryField.LowerCamelCase,
  39. "dataType": table.PrimaryField.DataType,
  40. "keys": strings.Join(keys, "\r\n"),
  41. "snakePrimaryKey": table.PrimaryField.SnakeCase,
  42. "keyValues": strings.Join(keyValues, ", "),
  43. })
  44. if err != nil {
  45. return "", err
  46. }
  47. return deleteBuffer.String(), nil
  48. }