blob: 8ede2397dee845137b9de5650318f5ce43cf3549 [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 (
"v.io/v23/security/access"
"v.io/syncbase/v23/services/syncbase/nosql"
)
// databaseData represents the persistent state of a Database.
type databaseData struct {
Name string
Version uint64 // covers the Perms field below
Perms access.Permissions
SchemaMetadata ?nosql.SchemaMetadata
}
// tableData represents the persistent state of a Table.
// TODO(sadovsky): Decide whether to track "empty-prefix" perms here.
type tableData struct {
Name string
Perms access.Permissions
}
// stPrefixPerms describes internal representation of prefix permissions
// in the store.
//
// Each pair of (key, perms) is stored as two key-value pairs:
// "$perms:%table:key" - stPrefixPerms{parent, perms}
// "$perms:%table:key~" - stPrefixPerms{parent, perms}
// where "~" represents a reserved char that's lexicographically greater than
// all chars allowed by clients, %table is the name of the table and parent is
// the longest proper prefix of the key that has associated permissions object.
type stPrefixPerms struct {
Parent string
Perms access.Permissions
}