mirror of
https://github.com/ent/ent.git
synced 2026-05-22 09:31:45 +03:00
dialect/sql: include nested builder errors on join (#1533)
* sql.Builder Join include Querier's error * sql.Builder Join ignore nil error Co-authored-by: Ariel Mashraki <7413593+a8m@users.noreply.github.com> Co-authored-by: Ariel Mashraki <7413593+a8m@users.noreply.github.com>
This commit is contained in:
@@ -29,6 +29,11 @@ type Querier interface {
|
||||
Query() (string, []interface{})
|
||||
}
|
||||
|
||||
// querierErr allowed propagate Querier's inner error
|
||||
type querierErr interface {
|
||||
Err() error
|
||||
}
|
||||
|
||||
// ColumnBuilder is a builder for column definition in table creation.
|
||||
type ColumnBuilder struct {
|
||||
Builder
|
||||
@@ -2091,6 +2096,7 @@ func (s *Selector) Query() (string, []interface{}) {
|
||||
b.WriteString(strconv.Itoa(*s.offset))
|
||||
}
|
||||
s.total = b.total
|
||||
s.AddError(b.Err())
|
||||
return b.String(), b.args
|
||||
}
|
||||
|
||||
@@ -2326,7 +2332,10 @@ func (b *Builder) Reset() *Builder {
|
||||
|
||||
// AddError appends an error to the builder errors.
|
||||
func (b *Builder) AddError(err error) *Builder {
|
||||
b.errs = append(b.errs, err)
|
||||
// allowed nil error make build process easier
|
||||
if err != nil {
|
||||
b.errs = append(b.errs, err)
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
@@ -2488,6 +2497,11 @@ func (b *Builder) join(qs []Querier, sep string) *Builder {
|
||||
b.WriteString(query)
|
||||
b.args = append(b.args, args...)
|
||||
b.total += len(args)
|
||||
if qe, ok := q.(querierErr); ok {
|
||||
if err := qe.Err(); err != nil {
|
||||
b.AddError(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user