1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- // 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
- }
|