pkg/query/executor/interface.go (32 lines of code) (raw):
// Licensed to Apache Software Foundation (ASF) under one or more contributor
// license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright
// ownership. Apache Software Foundation (ASF) licenses this file to you under
// the Apache License, Version 2.0 (the "License"); you may
// not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
// Package executor defines the specifications accessing underlying data repositories.
package executor
import (
"github.com/apache/skywalking-banyandb/api/common"
measurev1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/measure/v1"
modelv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/model/v1"
streamv1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/stream/v1"
"github.com/apache/skywalking-banyandb/banyand/tsdb"
)
// ExecutionContext allows retrieving data from tsdb.
type ExecutionContext interface {
Shards(entity tsdb.Entity) ([]tsdb.Shard, error)
Shard(id common.ShardID) (tsdb.Shard, error)
ParseTagFamily(family string, item tsdb.Item) (*modelv1.TagFamily, error)
}
// StreamExecutionContext allows retrieving data through the stream module.
type StreamExecutionContext interface {
ExecutionContext
ParseElementID(item tsdb.Item) (string, error)
}
// StreamExecutable allows querying in the stream schema.
type StreamExecutable interface {
Execute(StreamExecutionContext) ([]*streamv1.Element, error)
}
// MeasureExecutionContext allows retrieving data through the measure module.
type MeasureExecutionContext interface {
ExecutionContext
ParseField(name string, item tsdb.Item) (*measurev1.DataPoint_Field, error)
}
// MIterator allows iterating in a measure data set.
type MIterator interface {
Next() bool
Current() []*measurev1.DataPoint
Close() error
}
// MeasureExecutable allows querying in the measure schema.
type MeasureExecutable interface {
Execute(MeasureExecutionContext) (MIterator, error)
}