summaryrefslogtreecommitdiffstats
path: root/vendor/xorm.io/builder/cond.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/xorm.io/builder/cond.go')
-rw-r--r--vendor/xorm.io/builder/cond.go74
1 files changed, 74 insertions, 0 deletions
diff --git a/vendor/xorm.io/builder/cond.go b/vendor/xorm.io/builder/cond.go
new file mode 100644
index 0000000000..e44173bbd5
--- /dev/null
+++ b/vendor/xorm.io/builder/cond.go
@@ -0,0 +1,74 @@
+// Copyright 2016 The Xorm Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package builder
+
+import (
+ "io"
+)
+
+// Writer defines the interface
+type Writer interface {
+ io.Writer
+ Append(...interface{})
+}
+
+var _ Writer = NewWriter()
+
+// BytesWriter implments Writer and save SQL in bytes.Buffer
+type BytesWriter struct {
+ writer *StringBuilder
+ args []interface{}
+}
+
+// NewWriter creates a new string writer
+func NewWriter() *BytesWriter {
+ w := &BytesWriter{
+ writer: &StringBuilder{},
+ }
+ return w
+}
+
+// Write writes data to Writer
+func (s *BytesWriter) Write(buf []byte) (int, error) {
+ return s.writer.Write(buf)
+}
+
+// Append appends args to Writer
+func (s *BytesWriter) Append(args ...interface{}) {
+ s.args = append(s.args, args...)
+}
+
+// Cond defines an interface
+type Cond interface {
+ WriteTo(Writer) error
+ And(...Cond) Cond
+ Or(...Cond) Cond
+ IsValid() bool
+}
+
+type condEmpty struct{}
+
+var _ Cond = condEmpty{}
+
+// NewCond creates an empty condition
+func NewCond() Cond {
+ return condEmpty{}
+}
+
+func (condEmpty) WriteTo(w Writer) error {
+ return nil
+}
+
+func (condEmpty) And(conds ...Cond) Cond {
+ return And(conds...)
+}
+
+func (condEmpty) Or(conds ...Cond) Cond {
+ return Or(conds...)
+}
+
+func (condEmpty) IsValid() bool {
+ return false
+}