update.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package gen
  2. import (
  3. "bytes"
  4. "strings"
  5. "text/template"
  6. sqltemplate "zero/tools/goctl/model/sql/template"
  7. )
  8. func genUpdate(table *InnerTable) (string, error) {
  9. t, err := template.New("update").Parse(sqltemplate.Update)
  10. if err != nil {
  11. return "", nil
  12. }
  13. updateBuffer := new(bytes.Buffer)
  14. expressionValues := make([]string, 0)
  15. for _, filed := range table.Fields {
  16. if filed.SnakeCase == "create_time" || filed.SnakeCase == "update_time" || filed.IsPrimaryKey {
  17. continue
  18. }
  19. expressionValues = append(expressionValues, "data."+filed.UpperCamelCase)
  20. }
  21. expressionValues = append(expressionValues, "data."+table.PrimaryField.UpperCamelCase)
  22. err = t.Execute(updateBuffer, map[string]interface{}{
  23. "containsCache": table.ContainsCache,
  24. "upperObject": table.UpperCamelCase,
  25. "primaryCacheKey": table.CacheKey[table.PrimaryField.SnakeCase].DataKey,
  26. "primaryKeyVariable": table.CacheKey[table.PrimaryField.SnakeCase].KeyVariable,
  27. "lowerObject": table.LowerCamelCase,
  28. "primarySnakeCase": table.PrimaryField.SnakeCase,
  29. "expressionValues": strings.Join(expressionValues, ", "),
  30. })
  31. if err != nil {
  32. return "", err
  33. }
  34. return updateBuffer.String(), nil
  35. }