42 lines
673 B
Go
42 lines
673 B
Go
package sqimple
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type OnClause struct {
|
|
column string
|
|
operator string
|
|
value any
|
|
|
|
and []*OnClause
|
|
}
|
|
|
|
func (o *OnClause) And(column, operator string, value any) *OnClause {
|
|
o.and = append(o.and, On(column, operator, value))
|
|
return o
|
|
}
|
|
|
|
func (o *OnClause) String() string {
|
|
strs := []string{fmt.Sprintf("%s %s %s", o.column, o.operator, o.value)}
|
|
|
|
for _, next := range o.and {
|
|
strs = append(strs, "and", next.String())
|
|
}
|
|
|
|
return strings.Join(strs, " ")
|
|
}
|
|
|
|
func On(column, operator string, value any) *OnClause {
|
|
o := &OnClause{
|
|
column: column,
|
|
operator: operator,
|
|
value: value,
|
|
|
|
and: []*OnClause{},
|
|
}
|
|
|
|
return o
|
|
}
|