blob: e1deec54007315bfdfee8ae86e555436d74be72a [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package nosql
import (
wire "v.io/syncbase/v23/services/syncbase/nosql"
"v.io/v23/context"
"v.io/v23/naming"
"v.io/v23/security/access"
"v.io/v23/verror"
)
type table struct {
c wire.TableClientMethods
name string
relativeName string
}
var _ Table = (*table)(nil)
// TODO(sadovsky): Validate names before sending RPCs.
// Name implements Table.Name.
func (t *table) Name() string {
return t.relativeName
}
// Row implements Table.Row.
func (t *table) Row(key string) Row {
// TODO(sadovsky): Escape delimiters in key?
name := naming.Join(t.name, key)
return &row{wire.RowClient(name), name, key}
}
// Get implements Table.Get.
func (t *table) Get(ctx *context.T, key string, value interface{}) error {
return t.Row(key).Get(ctx, value)
}
// Put implements Table.Put.
func (t *table) Put(ctx *context.T, key string, value interface{}) error {
return t.Row(key).Put(ctx, value)
}
// Delete implements Table.Delete.
func (t *table) Delete(ctx *context.T, r RowRange) error {
return t.c.DeleteRowRange(ctx, r.Start(), r.Limit())
}
// Scan implements Table.Scan.
func (t *table) Scan(ctx *context.T, r RowRange) (Stream, error) {
return nil, verror.NewErrNotImplemented(ctx)
}
// SetPermissions implements Table.SetPermissions.
func (t *table) SetPermissions(ctx *context.T, prefix PrefixRange, perms access.Permissions) error {
return verror.NewErrNotImplemented(ctx)
}
// GetPermissions implements Table.GetPermissions.
func (t *table) GetPermissions(ctx *context.T, key string) ([]PrefixPermissions, error) {
return nil, verror.NewErrNotImplemented(ctx)
}
// DeletePermissions implements Table.DeletePermissions.
func (t *table) DeletePermissions(ctx *context.T, prefix PrefixRange) error {
return verror.NewErrNotImplemented(ctx)
}