package schema

import (
	"context"

	"github.com/pingcap-inc/trino-thrift-connectors/gen-go/trino"
)

type SchemaHandler interface {
	ListTables(ctx context.Context) (_r []*trino.TrinoThriftTableMetadata, _err error)

	GetSplits(
		ctx context.Context,
		schemaTableName *trino.TrinoThriftSchemaTableName,
		outputConstraint *trino.TrinoThriftTupleDomain,
	) (_r []*SplitInfo, _err error)

	GetIndexSplits(
		ctx context.Context,
		schemaTableName *trino.TrinoThriftSchemaTableName,
		outputConstraint *trino.TrinoThriftTupleDomain,
		indexColumnNames []string,
		keys *trino.TrinoThriftPageResult_,
	) (_r []*SplitInfo, _err error)

	GetRows(
		ctx context.Context,
		splitId *SplitInfo,
		columns []string,
	) (_r *trino.TrinoThriftPageResult_, _err error)
}
