package builderimp

import (
	"github.com/tech/sendico/pkg/db/repository/builder"
	"go.mongodb.org/mongo-driver/v2/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}
}
