Fix test
This commit is contained in:
parent
261e604c14
commit
5711ab9918
|
@ -4,7 +4,27 @@
|
|||
|
||||
package statements
|
||||
|
||||
import "xorm.io/builder"
|
||||
import (
|
||||
"xorm.io/builder"
|
||||
"xorm.io/xorm/schemas"
|
||||
)
|
||||
|
||||
type QuoteReplacer struct {
|
||||
*builder.BytesWriter
|
||||
quoter schemas.Quoter
|
||||
}
|
||||
|
||||
func (q *QuoteReplacer) Write(p []byte) (n int, err error) {
|
||||
c := q.quoter.Replace(string(p))
|
||||
return q.BytesWriter.Builder.WriteString(c)
|
||||
}
|
||||
|
||||
func (statement *Statement) quoteReplacer(w *builder.BytesWriter) *QuoteReplacer {
|
||||
return &QuoteReplacer{
|
||||
BytesWriter: w,
|
||||
quoter: statement.dialect.Quoter(),
|
||||
}
|
||||
}
|
||||
|
||||
// Where add Where statement
|
||||
func (statement *Statement) Where(query interface{}, args ...interface{}) *Statement {
|
||||
|
@ -15,7 +35,7 @@ func (statement *Statement) Where(query interface{}, args ...interface{}) *State
|
|||
func (statement *Statement) And(query interface{}, args ...interface{}) *Statement {
|
||||
switch qr := query.(type) {
|
||||
case string:
|
||||
cond := builder.Expr(qr, args...)
|
||||
cond := builder.Expr(statement.ReplaceQuote(qr), args...)
|
||||
statement.cond = statement.cond.And(cond)
|
||||
case map[string]interface{}:
|
||||
cond := make(builder.Eq)
|
||||
|
|
|
@ -231,7 +231,7 @@ func (statement *Statement) genSelectSQL(columnStr string, needLimit, needOrderB
|
|||
}
|
||||
|
||||
condWriter := builder.NewWriter()
|
||||
if err := statement.cond.WriteTo(condWriter); err != nil {
|
||||
if err := statement.cond.WriteTo(statement.quoteReplacer(condWriter)); err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
|
||||
|
@ -282,7 +282,7 @@ func (statement *Statement) genSelectSQL(columnStr string, needLimit, needOrderB
|
|||
if _, err := fmt.Fprint(mssqlCondi, whereStr); err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
if err := utils.WriteBuilder(mssqlCondi, condWriter); err != nil {
|
||||
if err := utils.WriteBuilder(mssqlCondi, statement.quoteReplacer(condWriter)); err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
}
|
||||
|
@ -311,7 +311,7 @@ func (statement *Statement) genSelectSQL(columnStr string, needLimit, needOrderB
|
|||
if _, err := fmt.Fprint(buf, whereStr); err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
if err := utils.WriteBuilder(buf, condWriter); err != nil {
|
||||
if err := utils.WriteBuilder(buf, statement.quoteReplacer(condWriter)); err != nil {
|
||||
return "", nil, err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,8 +10,13 @@ import (
|
|||
"xorm.io/builder"
|
||||
)
|
||||
|
||||
type BuildReader interface {
|
||||
String() string
|
||||
Args() []interface{}
|
||||
}
|
||||
|
||||
// WriteBuilder writes writers to one
|
||||
func WriteBuilder(w *builder.BytesWriter, inputs ...*builder.BytesWriter) error {
|
||||
func WriteBuilder(w *builder.BytesWriter, inputs ...BuildReader) error {
|
||||
for _, input := range inputs {
|
||||
if _, err := fmt.Fprint(w, input.String()); err != nil {
|
||||
return err
|
||||
|
|
Loading…
Reference in New Issue