mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-09-09 06:31:02 +00:00
* 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
57 lines
1.3 KiB
Go
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
|
|
}
|