Skip to content

Commit 1288fdc

Browse files
committed
add WhereStr, WhereAndStr, WhereOrStr function
1 parent 587d2c2 commit 1288fdc

2 files changed

Lines changed: 42 additions & 3 deletions

File tree

sqlbuilder.go

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -580,13 +580,46 @@ func (sb *SQLBuilder) FromOne(s string) *SQLBuilder {
580580
return sb
581581
}
582582

583+
// Where : just equal WhereAndStr
584+
func (sb *SQLBuilder) WhereStr(s string) *SQLBuilder {
585+
return sb.WhereAndStr(s)
586+
}
587+
588+
func (sb *SQLBuilder) WhereAndStr(s string) *SQLBuilder {
589+
if s == "" {
590+
sb.PanicOrErrorLog("must be support conditions")
591+
}
592+
593+
if sb.IsHasWheres() {
594+
sb.wheres = append(sb.wheres, fmt.Sprintf("AND %s", s))
595+
} else {
596+
sb.wheres = append(sb.wheres, s)
597+
}
598+
599+
return sb
600+
}
601+
602+
func (sb *SQLBuilder) WhereOrStr(s string) *SQLBuilder {
603+
if s == "" {
604+
sb.PanicOrErrorLog("must be support conditions")
605+
}
606+
607+
if sb.IsHasWheres() {
608+
sb.wheres = append(sb.wheres, fmt.Sprintf("OR %s", s))
609+
} else {
610+
sb.wheres = append(sb.wheres, s)
611+
}
612+
613+
return sb
614+
}
615+
583616
// Where : just equal WhereAnd
584617
func (sb *SQLBuilder) Where(s string, o string, v interface{}) *SQLBuilder {
585618
return sb.WhereAnd(s, o, v)
586619
}
587620

588621
func (sb *SQLBuilder) WhereAnd(s string, o string, v interface{}) *SQLBuilder {
589-
if len(s) == 0 && s != "" && o != "" {
622+
if s == "" || o == "" {
590623
sb.PanicOrErrorLog("must be support conditions")
591624
}
592625

@@ -609,7 +642,7 @@ func (sb *SQLBuilder) WhereAnd(s string, o string, v interface{}) *SQLBuilder {
609642
}
610643

611644
func (sb *SQLBuilder) WhereOr(s string, o string, v interface{}) *SQLBuilder {
612-
if len(s) == 0 && s != "" && o != "" {
645+
if s == "" || o == "" {
613646
sb.PanicOrErrorLog("must be support conditions")
614647
}
615648

@@ -649,7 +682,6 @@ func (sb *SQLBuilder) joinOn(p string, j string, s string, o string, v interface
649682
switch v.(type) {
650683
case string:
651684
sb.joins = append(sb.joins, fmt.Sprintf("%sJOIN %s ON %s %s '%s'", p, j, EscapeStr(s, sb.IsMysql()), EscapeStr(o, sb.IsMysql()), EscapeStr(v.(string), sb.IsMysql())))
652-
653685
default:
654686
sb.joins = append(sb.joins, fmt.Sprintf("%sJOIN %s ON %s %s %v", p, j, EscapeStr(s, sb.IsMysql()), EscapeStr(o, sb.IsMysql()), v))
655687
}

sqlbuilder_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,13 @@ func TestSQLBuilder_BuildedSQL(t *testing.T) {
6969
},
7070
wantSql: `INSERT INTO user (Host,User,Select_priv,testNil) VALUES (1,'\"2',true,NULL),(2,'\"22',true,NULL),(3,'\"32',false,NULL)`,
7171
},
72+
{
73+
name: "case 8 : Where",
74+
fn: func(sb *SQLBuilder) {
75+
sb.Select("Host", "User", "Select_priv").From("user").Where("company", "=", "a").WhereStr("company!='b'").WhereOrStr("user!='b'").BuildSelectSQL()
76+
},
77+
wantSql: `SELECT Host,User,Select_priv FROM user WHERE company = 'a' AND company!='b' OR user!='b'`,
78+
},
7279
}
7380
for _, tt := range tests {
7481
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)