dialect/sql: fix predicate builder on join

Summary: Pull Request resolved: https://github.com/facebookincubator/ent/pull/143

Reviewed By: idoshveki

Differential Revision: D18346652

fbshipit-source-id: e8c5d7eb3cefc16f52090de0d121e82cae058fc2
This commit is contained in:
Ariel Mashraki
2019-11-06 05:19:52 -08:00
committed by Facebook Github Bot
parent 7a6d1ce9dc
commit 53cfcb6e8b
46 changed files with 366 additions and 132 deletions

View File

@@ -731,6 +731,9 @@ func P() *Predicate { return &Predicate{} }
//
func Or(preds ...*Predicate) *Predicate {
return P().append(func(b *Builder) {
if len(preds) > 1 {
b.WriteString("(")
}
for i := range preds {
if i > 0 {
b.WriteString(" OR ")
@@ -739,6 +742,9 @@ func Or(preds ...*Predicate) *Predicate {
b.Join(preds[i])
})
}
if len(preds) > 1 {
b.WriteString(")")
}
})
}
@@ -1317,6 +1323,19 @@ func (s *Selector) Where(p *Predicate) *Selector {
return s
}
// P returns the predicate of a selector.
func (s *Selector) P() *Predicate {
return s.where
}
// SetP sets explicitly the predicate function for the selector and clear its previous state.
func (s *Selector) SetP(p *Predicate) *Selector {
s.where = p
s.or = false
s.not = false
return s
}
// FromSelect copies the predicate from a selector.
func (s *Selector) FromSelect(s2 *Selector) *Selector {
s.where = s2.where