featurebase/dax/queryer/service/queryer.go
Travis Turner 14f1930004
Make interfaces more specific than "MDS" (#2352)
* Make interfaces more specific than "MDS"

- Introduce `dax.Schemar` interface
- Introduce `dax.Noder` interface
- The rest is generally to standardize on the new interfaces.
- Remove `pilosa.SchemaInfoAPI` interface
- Move `TranslateNode` and `ComputeNode` types from controller to dax package
- Remove `queryer.FeatureBaseImporter`
- Remove `queryer.MDS` interface
- Remove `queryer.Importer` interface
- Identify types using an "MDS" interface and split into Noder/Schemar as necessary
- Changed `Queryer.orchestrator` to a `map[qual]*qualifiedOrchestrator` because we can't share an orchestrator across quals

* Convert orchestrator to use TableKeyer
2022-12-12 13:14:17 -06:00

57 lines
1.3 KiB
Go

package service
import (
"net/http"
"github.com/molecula/featurebase/v3/dax"
mdsclient "github.com/molecula/featurebase/v3/dax/mds/client"
"github.com/molecula/featurebase/v3/dax/queryer"
queryerhttp "github.com/molecula/featurebase/v3/dax/queryer/http"
"github.com/molecula/featurebase/v3/errors"
"github.com/molecula/featurebase/v3/logger"
fbnet "github.com/molecula/featurebase/v3/net"
)
// Ensure type implements interface.
var _ dax.Service = (*queryerService)(nil)
type queryerService struct {
uri *fbnet.URI
queryer *queryer.Queryer
logger logger.Logger
}
func New(uri *fbnet.URI, queryer *queryer.Queryer, logger logger.Logger) *queryerService {
return &queryerService{
uri: uri,
queryer: queryer,
logger: logger,
}
}
func (q *queryerService) Start() error {
// Start queryer service.
if err := q.queryer.Start(); err != nil {
return errors.Wrap(err, "starting queryer")
}
return nil
}
func (q *queryerService) Stop() error {
return nil
}
func (q *queryerService) Address() dax.Address {
return dax.Address(q.uri.HostPort() + "/" + dax.ServicePrefixQueryer)
}
func (q *queryerService) HTTPHandler() http.Handler {
return queryerhttp.Handler(q.queryer)
}
func (q *queryerService) SetMDS(addr dax.Address) error {
mdscli := mdsclient.New(addr, q.logger)
q.queryer.SetNoder(mdscli)
q.queryer.SetSchemar(mdscli)
return nil
}