// Package promql implements a promql parser to build flux query specifications from promql.
package promql

import (
	"fmt"

	"github.com/influxdata/flux"
)

func ParsePromQL(promql string, opts ...Option) (interface{}, error) {
	f, err := Parse("", []byte(promql), opts...)
	if err != nil {
		return "", err
	}
	return f, nil
}

func Build(promql string, opts ...Option) (*flux.Spec, error) {
	parsed, err := ParsePromQL(promql, opts...)
	if err != nil {
		return nil, err
	}
	builder, ok := parsed.(QueryBuilder)
	if !ok {
		return nil, fmt.Errorf("unable to build as %t is not a QueryBuilder", parsed)
	}
	return builder.QuerySpec()
}
