Files
chaisql/internal/expr/constraint.go
2023-12-02 11:25:56 +04:00

35 lines
665 B
Go

package expr
import (
"github.com/chaisql/chai/internal/database"
"github.com/chaisql/chai/internal/environment"
"github.com/chaisql/chai/internal/types"
"github.com/cockroachdb/errors"
)
type ConstraintExpr struct {
Expr Expr
}
func Constraint(e Expr) *ConstraintExpr {
return &ConstraintExpr{
Expr: e,
}
}
func (t *ConstraintExpr) Eval(tx *database.Transaction, o types.Object) (types.Value, error) {
var env environment.Environment
env.Tx = tx
env.SetRowFromObject(o)
if t.Expr == nil {
return NullLiteral, errors.New("missing expression")
}
return t.Expr.Eval(&env)
}
func (t *ConstraintExpr) String() string {
return t.Expr.String()
}