blob: 33d3883e5c55807d8132c246aadbf5b453b0d3dc [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"
)
// databaseData represents the persistent state of a Database.
type databaseData struct {
Name string
Version uint64 // covers the fields below
Perms access.Permissions
}
// 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
}