returning.go 604 B

123456789101112131415161718192021222324252627282930
  1. package clause
  2. type Returning struct {
  3. Columns []Column
  4. }
  5. // Name where clause name
  6. func (returning Returning) Name() string {
  7. return "RETURNING"
  8. }
  9. // Build build where clause
  10. func (returning Returning) Build(builder Builder) {
  11. for idx, column := range returning.Columns {
  12. if idx > 0 {
  13. builder.WriteByte(',')
  14. }
  15. builder.WriteQuoted(column)
  16. }
  17. }
  18. // MergeClause merge order by clauses
  19. func (returning Returning) MergeClause(clause *Clause) {
  20. if v, ok := clause.Expression.(Returning); ok {
  21. returning.Columns = append(v.Columns, returning.Columns...)
  22. }
  23. clause.Expression = returning
  24. }