// 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.

// This file was auto-generated by the vanadium vdl tool.
// Source: types.vdl

package nosql

import (
	// VDL system imports
	"v.io/v23/vdl"

	// VDL user imports
	"v.io/v23/security/access"
	"v.io/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
}

func (DatabaseData) __VDLReflect(struct {
	Name string `vdl:"v.io/x/ref/services/syncbase/server/nosql.DatabaseData"`
}) {
}

// TableData represents the persistent state of a Table.
type TableData struct {
	Name  string
	Perms access.Permissions
}

func (TableData) __VDLReflect(struct {
	Name string `vdl:"v.io/x/ref/services/syncbase/server/nosql.TableData"`
}) {
}

func init() {
	vdl.Register((*DatabaseData)(nil))
	vdl.Register((*TableData)(nil))
}
