select.go 568 B

1234567891011121314151617181920212223242526272829303132
  1. package clause
  2. // Select select attrs when querying, updating, creating
  3. type Select struct {
  4. Columns []Column
  5. Expression Expression
  6. }
  7. func (s Select) Name() string {
  8. return "SELECT"
  9. }
  10. func (s Select) Build(builder Builder) {
  11. if len(s.Columns) > 0 {
  12. for idx, column := range s.Columns {
  13. if idx > 0 {
  14. builder.WriteByte(',')
  15. }
  16. builder.WriteQuoted(column)
  17. }
  18. } else {
  19. builder.WriteByte('*')
  20. }
  21. }
  22. func (s Select) MergeClause(clause *Clause) {
  23. if s.Expression != nil {
  24. clause.Expression = s.Expression
  25. } else {
  26. clause.Expression = s
  27. }
  28. }