28 lines
634 B
Go
28 lines
634 B
Go
package builderimp
|
||
|
||
import (
|
||
"github.com/tech/sendico/pkg/db/repository/builder"
|
||
"go.mongodb.org/mongo-driver/bson"
|
||
)
|
||
|
||
type arrayImp struct {
|
||
elements []builder.Expression
|
||
}
|
||
|
||
// Build renders the literal array:
|
||
//
|
||
// [ <expr1>, <expr2>, … ]
|
||
func (b *arrayImp) Build() bson.A {
|
||
arr := make(bson.A, len(b.elements))
|
||
for i, expr := range b.elements {
|
||
// each expr.Build() returns the raw value or sub‐expression
|
||
arr[i] = expr.Build()
|
||
}
|
||
return arr
|
||
}
|
||
|
||
// NewArray constructs a new array expression from the given sub‐expressions.
|
||
func NewArray(exprs ...builder.Expression) *arrayImp {
|
||
return &arrayImp{elements: exprs}
|
||
}
|