insert.go 1022 B

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