|
|
@@ -3,53 +3,29 @@ package clause
|
|
|
import "strings"
|
|
|
|
|
|
type Where struct {
|
|
|
- conditions []Clause
|
|
|
+ condition Clause
|
|
|
}
|
|
|
|
|
|
-func NewWhere(conditions []Clause) *Where {
|
|
|
+func NewWhere(condition Clause) *Where {
|
|
|
return &Where{
|
|
|
- conditions: conditions,
|
|
|
+ condition: condition,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func (clause *Where) Clause() (string, error) {
|
|
|
- conditionClauseBuilder := strings.Builder{}
|
|
|
- conditionClauseBuilder.WriteString(" ")
|
|
|
- for i, condition := range clause.conditions {
|
|
|
- if len(clause.conditions) > 1 {
|
|
|
- conditionClauseBuilder.WriteString("(")
|
|
|
- }
|
|
|
-
|
|
|
- conditionClauseStr, err := condition.Clause()
|
|
|
- if err != nil {
|
|
|
- return "", err
|
|
|
- }
|
|
|
-
|
|
|
- conditionClauseBuilder.WriteString(conditionClauseStr)
|
|
|
-
|
|
|
- if len(clause.conditions) > 1 {
|
|
|
- conditionClauseBuilder.WriteString(")")
|
|
|
- }
|
|
|
-
|
|
|
- if i != len(clause.conditions)-1 && len(clause.conditions) > 1 {
|
|
|
- conditionClauseBuilder.WriteString(" AND ")
|
|
|
- }
|
|
|
+ conditionClause, err := clause.condition.Clause()
|
|
|
+ if err != nil {
|
|
|
+ return "", err
|
|
|
}
|
|
|
|
|
|
clauseBuilder := strings.Builder{}
|
|
|
clauseBuilder.WriteString("WHERE\n")
|
|
|
- clauseBuilder.WriteString(conditionClauseBuilder.String())
|
|
|
+ clauseBuilder.WriteString(" " + conditionClause)
|
|
|
clauseBuilder.WriteString("\n")
|
|
|
|
|
|
return clauseBuilder.String(), nil
|
|
|
}
|
|
|
|
|
|
func (clause *Where) Args() []any {
|
|
|
- args := make([]any, 0)
|
|
|
-
|
|
|
- for _, condition := range clause.conditions {
|
|
|
- args = append(args, condition.Args()...)
|
|
|
- }
|
|
|
-
|
|
|
- return args
|
|
|
+ return clause.condition.Args()
|
|
|
}
|