aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/go-xorm/builder/cond_and.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-xorm/builder/cond_and.go')
-rw-r--r--vendor/github.com/go-xorm/builder/cond_and.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/vendor/github.com/go-xorm/builder/cond_and.go b/vendor/github.com/go-xorm/builder/cond_and.go
new file mode 100644
index 0000000000..5063c79bf8
--- /dev/null
+++ b/vendor/github.com/go-xorm/builder/cond_and.go
@@ -0,0 +1,54 @@
+package builder
+
+import "fmt"
+
+type condAnd []Cond
+
+var _ Cond = condAnd{}
+
+func And(conds ...Cond) Cond {
+ var result = make(condAnd, 0, len(conds))
+ for _, cond := range conds {
+ if cond == nil || !cond.IsValid() {
+ continue
+ }
+ result = append(result, cond)
+ }
+ return result
+}
+
+func (and condAnd) WriteTo(w Writer) error {
+ for i, cond := range and {
+ _, isOr := cond.(condOr)
+ if isOr {
+ fmt.Fprint(w, "(")
+ }
+
+ err := cond.WriteTo(w)
+ if err != nil {
+ return err
+ }
+
+ if isOr {
+ fmt.Fprint(w, ")")
+ }
+
+ if i != len(and)-1 {
+ fmt.Fprint(w, " AND ")
+ }
+ }
+
+ return nil
+}
+
+func (and condAnd) And(conds ...Cond) Cond {
+ return And(and, And(conds...))
+}
+
+func (and condAnd) Or(conds ...Cond) Cond {
+ return Or(and, Or(conds...))
+}
+
+func (and condAnd) IsValid() bool {
+ return len(and) > 0
+}