12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package hrpc
- import (
- "context"
- "errors"
- "github.com/golang/protobuf/proto"
- "github.com/tsuna/gohbase/pb"
- )
- // ListTableNames models a ListTableNames pb call
- type ListTableNames struct {
- base
- regex string
- includeSysTables bool
- namespace string
- }
- // ListRegex sets a regex for ListTableNames
- func ListRegex(regex string) func(Call) error {
- return func(c Call) error {
- l, ok := c.(*ListTableNames)
- if !ok {
- return errors.New("ListRegex option can only be used with ListTableNames")
- }
- l.regex = regex
- return nil
- }
- }
- // ListNamespace sets a namespace for ListTableNames
- func ListNamespace(ns string) func(Call) error {
- return func(c Call) error {
- l, ok := c.(*ListTableNames)
- if !ok {
- return errors.New("ListNamespace option can only be used with ListTableNames")
- }
- l.namespace = ns
- return nil
- }
- }
- // ListSysTables includes sys tables for ListTableNames
- func ListSysTables(b bool) func(Call) error {
- return func(c Call) error {
- l, ok := c.(*ListTableNames)
- if !ok {
- return errors.New("ListSysTables option can only be used with ListTableNames")
- }
- l.includeSysTables = b
- return nil
- }
- }
- // NewListTableNames creates a new GetTableNames request that will list tables in hbase.
- //
- // By default matchs all tables. Use the options (ListRegex, ListNamespace, ListSysTables) to
- // set non default behaviour.
- func NewListTableNames(ctx context.Context, opts ...func(Call) error) (*ListTableNames, error) {
- tn := &ListTableNames{
- base: base{
- ctx: ctx,
- resultch: make(chan RPCResult, 1),
- },
- regex: ".*",
- }
- if err := applyOptions(tn, opts...); err != nil {
- return nil, err
- }
- return tn, nil
- }
- // Name returns the name of this RPC call.
- func (tn *ListTableNames) Name() string {
- return "GetTableNames"
- }
- // ToProto converts the RPC into a protobuf message.
- func (tn *ListTableNames) ToProto() proto.Message {
- return &pb.GetTableNamesRequest{
- Regex: proto.String(tn.regex),
- IncludeSysTables: proto.Bool(tn.includeSysTables),
- Namespace: proto.String(tn.namespace),
- }
- }
- // NewResponse creates an empty protobuf message to read the response of this
- // RPC.
- func (tn *ListTableNames) NewResponse() proto.Message {
- return &pb.GetTableNamesResponse{}
- }
|