where.go 676 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package clause
  2. import "strings"
  3. type Where struct {
  4. condition Clause
  5. }
  6. func NewWhere(condition Clause) *Where {
  7. return &Where{
  8. condition: condition,
  9. }
  10. }
  11. func (clause *Where) Clause() (string, error) {
  12. if clause.condition == nil {
  13. return "", nil
  14. }
  15. conditionClause, err := clause.condition.Clause()
  16. if err != nil {
  17. return "", err
  18. }
  19. clauseBuilder := strings.Builder{}
  20. clauseBuilder.WriteString("WHERE\n")
  21. clauseBuilder.WriteString(" " + conditionClause)
  22. clauseBuilder.WriteString("\n")
  23. return clauseBuilder.String(), nil
  24. }
  25. func (clause *Where) Args() []any {
  26. if clause.condition == nil {
  27. return make([]any, 0)
  28. }
  29. return clause.condition.Args()
  30. }