| // 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. |
| var vdl = require('vanadium').vdl; |
| var makeError = require('vanadium').verror.makeError; |
| var actions = require('vanadium').verror.actions; |
| var canonicalize = require('vanadium').vdl.canonicalize; |
| |
| |
| |
| |
| |
| var access = require('./../../../security/access'); |
| var permissions = require('./../../permissions'); |
| var watch = require('./../../watch'); |
| |
| module.exports = {}; |
| |
| |
| |
| // Types: |
| var _type1 = new vdl.Type(); |
| var _type2 = new vdl.Type(); |
| var _type3 = new vdl.Type(); |
| var _type4 = new vdl.Type(); |
| var _type5 = new vdl.Type(); |
| var _type6 = new vdl.Type(); |
| var _type7 = new vdl.Type(); |
| var _type8 = new vdl.Type(); |
| var _type9 = new vdl.Type(); |
| var _typeBatchInfo = new vdl.Type(); |
| var _typeBatchOptions = new vdl.Type(); |
| var _typeBatchSource = new vdl.Type(); |
| var _typeBlobFetchState = new vdl.Type(); |
| var _typeBlobFetchStatus = new vdl.Type(); |
| var _typeBlobRef = new vdl.Type(); |
| var _typeConflictData = new vdl.Type(); |
| var _typeConflictInfo = new vdl.Type(); |
| var _typeCrPolicy = new vdl.Type(); |
| var _typeCrRule = new vdl.Type(); |
| var _typeKeyValue = new vdl.Type(); |
| var _typeOperation = new vdl.Type(); |
| var _typePrefixPermissions = new vdl.Type(); |
| var _typeResolutionInfo = new vdl.Type(); |
| var _typeResolverType = new vdl.Type(); |
| var _typeRowInfo = new vdl.Type(); |
| var _typeRowOp = new vdl.Type(); |
| var _typeScanOp = new vdl.Type(); |
| var _typeSchemaMetadata = new vdl.Type(); |
| var _typeStoreChange = new vdl.Type(); |
| var _typeSyncGroupMemberInfo = new vdl.Type(); |
| var _typeSyncGroupSpec = new vdl.Type(); |
| var _typeValue = new vdl.Type(); |
| var _typeValueSelection = new vdl.Type(); |
| _type1.kind = vdl.kind.LIST; |
| _type1.name = ""; |
| _type1.elem = vdl.types.STRING; |
| _type2.kind = vdl.kind.MAP; |
| _type2.name = ""; |
| _type2.elem = _typeSyncGroupMemberInfo; |
| _type2.key = vdl.types.STRING; |
| _type3.kind = vdl.kind.LIST; |
| _type3.name = ""; |
| _type3.elem = vdl.types.BYTE; |
| _type4.kind = vdl.kind.LIST; |
| _type4.name = ""; |
| _type4.elem = _typeCrRule; |
| _type5.kind = vdl.kind.OPTIONAL; |
| _type5.name = ""; |
| _type5.elem = _typeValue; |
| _type6.kind = vdl.kind.LIST; |
| _type6.name = ""; |
| _type6.elem = vdl.types.UINT16; |
| _type7.kind = vdl.kind.OPTIONAL; |
| _type7.name = ""; |
| _type7.elem = _typeSchemaMetadata; |
| _type8.kind = vdl.kind.LIST; |
| _type8.name = ""; |
| _type8.elem = vdl.types.ANY; |
| _type9.kind = vdl.kind.LIST; |
| _type9.name = ""; |
| _type9.elem = _typePrefixPermissions; |
| _typeBatchInfo.kind = vdl.kind.STRUCT; |
| _typeBatchInfo.name = "v.io/v23/services/syncbase/nosql.BatchInfo"; |
| _typeBatchInfo.fields = [{name: "Id", type: vdl.types.UINT16}, {name: "Hint", type: vdl.types.STRING}, {name: "Source", type: _typeBatchSource}]; |
| _typeBatchOptions.kind = vdl.kind.STRUCT; |
| _typeBatchOptions.name = "v.io/v23/services/syncbase/nosql.BatchOptions"; |
| _typeBatchOptions.fields = [{name: "Hint", type: vdl.types.STRING}, {name: "ReadOnly", type: vdl.types.BOOL}]; |
| _typeBatchSource.kind = vdl.kind.ENUM; |
| _typeBatchSource.name = "v.io/v23/services/syncbase/nosql.BatchSource"; |
| _typeBatchSource.labels = ["Local", "Remote"]; |
| _typeBlobFetchState.kind = vdl.kind.ENUM; |
| _typeBlobFetchState.name = "v.io/v23/services/syncbase/nosql.BlobFetchState"; |
| _typeBlobFetchState.labels = ["Pending", "Locating", "Fetching", "Done"]; |
| _typeBlobFetchStatus.kind = vdl.kind.STRUCT; |
| _typeBlobFetchStatus.name = "v.io/v23/services/syncbase/nosql.BlobFetchStatus"; |
| _typeBlobFetchStatus.fields = [{name: "State", type: _typeBlobFetchState}, {name: "Received", type: vdl.types.INT64}, {name: "Total", type: vdl.types.INT64}]; |
| _typeBlobRef.kind = vdl.kind.STRING; |
| _typeBlobRef.name = "v.io/v23/services/syncbase/nosql.BlobRef"; |
| _typeConflictData.kind = vdl.kind.UNION; |
| _typeConflictData.name = "v.io/v23/services/syncbase/nosql.ConflictData"; |
| _typeConflictData.fields = [{name: "Batch", type: _typeBatchInfo}, {name: "Row", type: _typeRowInfo}]; |
| _typeConflictInfo.kind = vdl.kind.STRUCT; |
| _typeConflictInfo.name = "v.io/v23/services/syncbase/nosql.ConflictInfo"; |
| _typeConflictInfo.fields = [{name: "Data", type: _typeConflictData}, {name: "Continued", type: vdl.types.BOOL}]; |
| _typeCrPolicy.kind = vdl.kind.STRUCT; |
| _typeCrPolicy.name = "v.io/v23/services/syncbase/nosql.CrPolicy"; |
| _typeCrPolicy.fields = [{name: "Rules", type: _type4}]; |
| _typeCrRule.kind = vdl.kind.STRUCT; |
| _typeCrRule.name = "v.io/v23/services/syncbase/nosql.CrRule"; |
| _typeCrRule.fields = [{name: "TableName", type: vdl.types.STRING}, {name: "KeyPrefix", type: vdl.types.STRING}, {name: "Type", type: vdl.types.STRING}, {name: "Resolver", type: _typeResolverType}]; |
| _typeKeyValue.kind = vdl.kind.STRUCT; |
| _typeKeyValue.name = "v.io/v23/services/syncbase/nosql.KeyValue"; |
| _typeKeyValue.fields = [{name: "Key", type: vdl.types.STRING}, {name: "Value", type: _type3}]; |
| _typeOperation.kind = vdl.kind.UNION; |
| _typeOperation.name = "v.io/v23/services/syncbase/nosql.Operation"; |
| _typeOperation.fields = [{name: "Read", type: _typeRowOp}, {name: "Write", type: _typeRowOp}, {name: "Scan", type: _typeScanOp}]; |
| _typePrefixPermissions.kind = vdl.kind.STRUCT; |
| _typePrefixPermissions.name = "v.io/v23/services/syncbase/nosql.PrefixPermissions"; |
| _typePrefixPermissions.fields = [{name: "Prefix", type: vdl.types.STRING}, {name: "Perms", type: new access.Permissions()._type}]; |
| _typeResolutionInfo.kind = vdl.kind.STRUCT; |
| _typeResolutionInfo.name = "v.io/v23/services/syncbase/nosql.ResolutionInfo"; |
| _typeResolutionInfo.fields = [{name: "Key", type: vdl.types.STRING}, {name: "Selection", type: _typeValueSelection}, {name: "Result", type: _type5}, {name: "Continued", type: vdl.types.BOOL}]; |
| _typeResolverType.kind = vdl.kind.ENUM; |
| _typeResolverType.name = "v.io/v23/services/syncbase/nosql.ResolverType"; |
| _typeResolverType.labels = ["LastWins", "AppResolves", "Defer"]; |
| _typeRowInfo.kind = vdl.kind.STRUCT; |
| _typeRowInfo.name = "v.io/v23/services/syncbase/nosql.RowInfo"; |
| _typeRowInfo.fields = [{name: "Op", type: _typeOperation}, {name: "BatchIds", type: _type6}]; |
| _typeRowOp.kind = vdl.kind.STRUCT; |
| _typeRowOp.name = "v.io/v23/services/syncbase/nosql.RowOp"; |
| _typeRowOp.fields = [{name: "Key", type: vdl.types.STRING}, {name: "LocalValue", type: _type5}, {name: "RemoteValue", type: _type5}, {name: "AncestorValue", type: _type5}]; |
| _typeScanOp.kind = vdl.kind.STRUCT; |
| _typeScanOp.name = "v.io/v23/services/syncbase/nosql.ScanOp"; |
| _typeScanOp.fields = [{name: "Start", type: vdl.types.STRING}, {name: "Limit", type: vdl.types.STRING}]; |
| _typeSchemaMetadata.kind = vdl.kind.STRUCT; |
| _typeSchemaMetadata.name = "v.io/v23/services/syncbase/nosql.SchemaMetadata"; |
| _typeSchemaMetadata.fields = [{name: "Version", type: vdl.types.INT32}, {name: "Policy", type: _typeCrPolicy}]; |
| _typeStoreChange.kind = vdl.kind.STRUCT; |
| _typeStoreChange.name = "v.io/v23/services/syncbase/nosql.StoreChange"; |
| _typeStoreChange.fields = [{name: "Value", type: _type3}, {name: "FromSync", type: vdl.types.BOOL}]; |
| _typeSyncGroupMemberInfo.kind = vdl.kind.STRUCT; |
| _typeSyncGroupMemberInfo.name = "v.io/v23/services/syncbase/nosql.SyncGroupMemberInfo"; |
| _typeSyncGroupMemberInfo.fields = [{name: "SyncPriority", type: vdl.types.BYTE}]; |
| _typeSyncGroupSpec.kind = vdl.kind.STRUCT; |
| _typeSyncGroupSpec.name = "v.io/v23/services/syncbase/nosql.SyncGroupSpec"; |
| _typeSyncGroupSpec.fields = [{name: "Description", type: vdl.types.STRING}, {name: "Perms", type: new access.Permissions()._type}, {name: "Prefixes", type: _type1}, {name: "MountTables", type: _type1}, {name: "IsPrivate", type: vdl.types.BOOL}]; |
| _typeValue.kind = vdl.kind.STRUCT; |
| _typeValue.name = "v.io/v23/services/syncbase/nosql.Value"; |
| _typeValue.fields = [{name: "Bytes", type: _type3}, {name: "WriteTs", type: vdl.types.INT64}]; |
| _typeValueSelection.kind = vdl.kind.ENUM; |
| _typeValueSelection.name = "v.io/v23/services/syncbase/nosql.ValueSelection"; |
| _typeValueSelection.labels = ["Local", "Remote", "Other"]; |
| _type1.freeze(); |
| _type2.freeze(); |
| _type3.freeze(); |
| _type4.freeze(); |
| _type5.freeze(); |
| _type6.freeze(); |
| _type7.freeze(); |
| _type8.freeze(); |
| _type9.freeze(); |
| _typeBatchInfo.freeze(); |
| _typeBatchOptions.freeze(); |
| _typeBatchSource.freeze(); |
| _typeBlobFetchState.freeze(); |
| _typeBlobFetchStatus.freeze(); |
| _typeBlobRef.freeze(); |
| _typeConflictData.freeze(); |
| _typeConflictInfo.freeze(); |
| _typeCrPolicy.freeze(); |
| _typeCrRule.freeze(); |
| _typeKeyValue.freeze(); |
| _typeOperation.freeze(); |
| _typePrefixPermissions.freeze(); |
| _typeResolutionInfo.freeze(); |
| _typeResolverType.freeze(); |
| _typeRowInfo.freeze(); |
| _typeRowOp.freeze(); |
| _typeScanOp.freeze(); |
| _typeSchemaMetadata.freeze(); |
| _typeStoreChange.freeze(); |
| _typeSyncGroupMemberInfo.freeze(); |
| _typeSyncGroupSpec.freeze(); |
| _typeValue.freeze(); |
| _typeValueSelection.freeze(); |
| module.exports.BatchInfo = (vdl.registry.lookupOrCreateConstructor(_typeBatchInfo)); |
| module.exports.BatchOptions = (vdl.registry.lookupOrCreateConstructor(_typeBatchOptions)); |
| module.exports.BatchSource = { |
| LOCAL: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeBatchSource))('Local', true), _typeBatchSource), |
| REMOTE: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeBatchSource))('Remote', true), _typeBatchSource), |
| }; |
| module.exports.BlobFetchState = { |
| PENDING: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeBlobFetchState))('Pending', true), _typeBlobFetchState), |
| LOCATING: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeBlobFetchState))('Locating', true), _typeBlobFetchState), |
| FETCHING: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeBlobFetchState))('Fetching', true), _typeBlobFetchState), |
| DONE: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeBlobFetchState))('Done', true), _typeBlobFetchState), |
| }; |
| module.exports.BlobFetchStatus = (vdl.registry.lookupOrCreateConstructor(_typeBlobFetchStatus)); |
| module.exports.BlobRef = (vdl.registry.lookupOrCreateConstructor(_typeBlobRef)); |
| module.exports.ConflictData = (vdl.registry.lookupOrCreateConstructor(_typeConflictData)); |
| module.exports.ConflictInfo = (vdl.registry.lookupOrCreateConstructor(_typeConflictInfo)); |
| module.exports.CrPolicy = (vdl.registry.lookupOrCreateConstructor(_typeCrPolicy)); |
| module.exports.CrRule = (vdl.registry.lookupOrCreateConstructor(_typeCrRule)); |
| module.exports.KeyValue = (vdl.registry.lookupOrCreateConstructor(_typeKeyValue)); |
| module.exports.Operation = (vdl.registry.lookupOrCreateConstructor(_typeOperation)); |
| module.exports.PrefixPermissions = (vdl.registry.lookupOrCreateConstructor(_typePrefixPermissions)); |
| module.exports.ResolutionInfo = (vdl.registry.lookupOrCreateConstructor(_typeResolutionInfo)); |
| module.exports.ResolverType = { |
| LAST_WINS: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeResolverType))('LastWins', true), _typeResolverType), |
| APP_RESOLVES: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeResolverType))('AppResolves', true), _typeResolverType), |
| DEFER: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeResolverType))('Defer', true), _typeResolverType), |
| }; |
| module.exports.RowInfo = (vdl.registry.lookupOrCreateConstructor(_typeRowInfo)); |
| module.exports.RowOp = (vdl.registry.lookupOrCreateConstructor(_typeRowOp)); |
| module.exports.ScanOp = (vdl.registry.lookupOrCreateConstructor(_typeScanOp)); |
| module.exports.SchemaMetadata = (vdl.registry.lookupOrCreateConstructor(_typeSchemaMetadata)); |
| module.exports.StoreChange = (vdl.registry.lookupOrCreateConstructor(_typeStoreChange)); |
| module.exports.SyncGroupMemberInfo = (vdl.registry.lookupOrCreateConstructor(_typeSyncGroupMemberInfo)); |
| module.exports.SyncGroupSpec = (vdl.registry.lookupOrCreateConstructor(_typeSyncGroupSpec)); |
| module.exports.Value = (vdl.registry.lookupOrCreateConstructor(_typeValue)); |
| module.exports.ValueSelection = { |
| LOCAL: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeValueSelection))('Local', true), _typeValueSelection), |
| REMOTE: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeValueSelection))('Remote', true), _typeValueSelection), |
| OTHER: canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeValueSelection))('Other', true), _typeValueSelection), |
| }; |
| |
| |
| |
| |
| // Consts: |
| |
| module.exports.NullBlobRef = canonicalize.reduce(new (vdl.registry.lookupOrCreateConstructor(_typeBlobRef))("", true), _typeBlobRef); |
| |
| |
| |
| // Errors: |
| |
| module.exports.BoundToBatchError = makeError('v.io/v23/services/syncbase/nosql.BoundToBatch', actions.NO_RETRY, { |
| 'en': '{1:}{2:} bound to batch', |
| }, [ |
| ]); |
| |
| |
| module.exports.NotBoundToBatchError = makeError('v.io/v23/services/syncbase/nosql.NotBoundToBatch', actions.NO_RETRY, { |
| 'en': '{1:}{2:} not bound to batch', |
| }, [ |
| ]); |
| |
| |
| module.exports.ReadOnlyBatchError = makeError('v.io/v23/services/syncbase/nosql.ReadOnlyBatch', actions.NO_RETRY, { |
| 'en': '{1:}{2:} batch is read-only', |
| }, [ |
| ]); |
| |
| |
| module.exports.ConcurrentBatchError = makeError('v.io/v23/services/syncbase/nosql.ConcurrentBatch', actions.NO_RETRY, { |
| 'en': '{1:}{2:} concurrent batch', |
| }, [ |
| ]); |
| |
| |
| module.exports.SchemaVersionMismatchError = makeError('v.io/v23/services/syncbase/nosql.SchemaVersionMismatch', actions.NO_RETRY, { |
| 'en': '{1:}{2:} actual schema version does not match the provided one', |
| }, [ |
| ]); |
| |
| |
| module.exports.BlobNotCommittedError = makeError('v.io/v23/services/syncbase/nosql.BlobNotCommitted', actions.NO_RETRY, { |
| 'en': '{1:}{2:} blob is not yet committed', |
| }, [ |
| ]); |
| |
| |
| |
| |
| // Services: |
| |
| |
| |
| function DatabaseWatcher(){} |
| module.exports.DatabaseWatcher = DatabaseWatcher; |
| |
| |
| |
| DatabaseWatcher.prototype.getResumeMarker = function(ctx, serverCall) { |
| throw new Error('Method GetResumeMarker not implemented'); |
| }; |
| |
| |
| DatabaseWatcher.prototype.watchGlob = function(ctx, serverCall, req) { |
| throw new Error('Method WatchGlob not implemented'); |
| }; |
| |
| |
| |
| DatabaseWatcher.prototype._serviceDescription = { |
| name: 'DatabaseWatcher', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// DatabaseWatcher allows a client to watch for updates in the database.\n// For each watched request, the client will receive a reliable stream of watch\n// events without re-ordering. See watch.GlobWatcher for a detailed explanation\n// of the behavior.\n// TODO(rogulenko): Currently the only supported watch patterns are\n// 'table/row*'. Consider changing that.\n//\n// The watching is done by starting a streaming RPC. The argument to the RPC\n// contains the ResumeMarker that points to a particular place in the database\n// event log. The result stream consists of a never-ending sequence of Change\n// messages (until the call fails or is canceled). Each Change contains the\n// Name field in the form \"<tableName>/<rowKey>\" and the Value field of the\n// StoreChange type. If the client has no access to a row specified in a change,\n// that change is excluded from the result stream.\n//\n// The DatabaseWatcher is designed to be used in the following way:\n// 1) begin a read-only batch\n// 2) read all information your app needs\n// 3) read the ResumeMarker\n// 4) abort the batch\n// 5) start watching changes to the data using the ResumeMarker\n// In this configuration the client doesn't miss any changes.", |
| embeds: [{ |
| name: 'GlobWatcher', |
| pkgPath: 'v.io/v23/services/watch', |
| doc: "// GlobWatcher allows a client to receive updates for changes to objects\n// that match a pattern. See the package comments for details." |
| }, |
| ], |
| methods: [ |
| |
| |
| { |
| name: 'GetResumeMarker', |
| doc: "// GetResumeMarker returns the ResumeMarker that points to the current end\n// of the event log. GetResumeMarker() can be called on a batch.", |
| inArgs: [], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: new watch.ResumeMarker()._type |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'WatchGlob', |
| doc: "// WatchGlob returns a stream of changes that match a pattern.", |
| inArgs: [{ |
| name: 'req', |
| doc: "", |
| type: new watch.GlobRequest()._type |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: { |
| name: '', |
| doc: '', |
| type: new watch.Change()._type |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Resolve", true), new access.Tag()._type), ] |
| }, |
| |
| ] |
| }; |
| |
| |
| |
| function SyncGroupManager(){} |
| module.exports.SyncGroupManager = SyncGroupManager; |
| |
| |
| |
| SyncGroupManager.prototype.getSyncGroupNames = function(ctx, serverCall) { |
| throw new Error('Method GetSyncGroupNames not implemented'); |
| }; |
| |
| |
| SyncGroupManager.prototype.createSyncGroup = function(ctx, serverCall, sgName, spec, myInfo) { |
| throw new Error('Method CreateSyncGroup not implemented'); |
| }; |
| |
| |
| SyncGroupManager.prototype.joinSyncGroup = function(ctx, serverCall, sgName, myInfo) { |
| throw new Error('Method JoinSyncGroup not implemented'); |
| }; |
| |
| |
| SyncGroupManager.prototype.leaveSyncGroup = function(ctx, serverCall, sgName) { |
| throw new Error('Method LeaveSyncGroup not implemented'); |
| }; |
| |
| |
| SyncGroupManager.prototype.destroySyncGroup = function(ctx, serverCall, sgName) { |
| throw new Error('Method DestroySyncGroup not implemented'); |
| }; |
| |
| |
| SyncGroupManager.prototype.ejectFromSyncGroup = function(ctx, serverCall, sgName, member) { |
| throw new Error('Method EjectFromSyncGroup not implemented'); |
| }; |
| |
| |
| SyncGroupManager.prototype.getSyncGroupSpec = function(ctx, serverCall, sgName) { |
| throw new Error('Method GetSyncGroupSpec not implemented'); |
| }; |
| |
| |
| SyncGroupManager.prototype.setSyncGroupSpec = function(ctx, serverCall, sgName, spec, version) { |
| throw new Error('Method SetSyncGroupSpec not implemented'); |
| }; |
| |
| |
| SyncGroupManager.prototype.getSyncGroupMembers = function(ctx, serverCall, sgName) { |
| throw new Error('Method GetSyncGroupMembers not implemented'); |
| }; |
| |
| |
| |
| SyncGroupManager.prototype._serviceDescription = { |
| name: 'SyncGroupManager', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// SyncGroupManager is the interface for SyncGroup operations.\n// TODO(hpucha): Add blessings to create/join and add a refresh method.", |
| embeds: [], |
| methods: [ |
| |
| |
| { |
| name: 'GetSyncGroupNames', |
| doc: "// GetSyncGroupNames returns the global names of all SyncGroups attached to\n// this database.", |
| inArgs: [], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: _type1 |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'CreateSyncGroup', |
| doc: "// CreateSyncGroup creates a new SyncGroup with the given spec.\n//\n// Requires: Client must have at least Read access on the Database; prefix ACL\n// must exist at each SyncGroup prefix; Client must have at least Read access\n// on each of these prefix ACLs.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'spec', |
| doc: "", |
| type: _typeSyncGroupSpec |
| }, |
| { |
| name: 'myInfo', |
| doc: "", |
| type: _typeSyncGroupMemberInfo |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'JoinSyncGroup', |
| doc: "// JoinSyncGroup joins the SyncGroup.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'myInfo', |
| doc: "", |
| type: _typeSyncGroupMemberInfo |
| }, |
| ], |
| outArgs: [{ |
| name: 'spec', |
| doc: "", |
| type: _typeSyncGroupSpec |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'LeaveSyncGroup', |
| doc: "// LeaveSyncGroup leaves the SyncGroup. Previously synced data will continue\n// to be available.\n//\n// Requires: Client must have at least Read access on the Database.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'DestroySyncGroup', |
| doc: "// DestroySyncGroup destroys the SyncGroup. Previously synced data will\n// continue to be available to all members.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'EjectFromSyncGroup', |
| doc: "// EjectFromSyncGroup ejects a member from the SyncGroup. The ejected member\n// will not be able to sync further, but will retain any data it has already\n// synced.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'member', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetSyncGroupSpec', |
| doc: "// GetSyncGroupSpec gets the SyncGroup spec. version allows for atomic\n// read-modify-write of the spec - see comment for SetSyncGroupSpec.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [{ |
| name: 'spec', |
| doc: "", |
| type: _typeSyncGroupSpec |
| }, |
| { |
| name: 'version', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'SetSyncGroupSpec', |
| doc: "// SetSyncGroupSpec sets the SyncGroup spec. version may be either empty or\n// the value from a previous Get. If not empty, Set will only succeed if the\n// current version matches the specified one.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'spec', |
| doc: "", |
| type: _typeSyncGroupSpec |
| }, |
| { |
| name: 'version', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetSyncGroupMembers', |
| doc: "// GetSyncGroupMembers gets the info objects for members of the SyncGroup.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [{ |
| name: 'members', |
| doc: "", |
| type: _type2 |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| ] |
| }; |
| |
| |
| |
| function BlobManager(){} |
| module.exports.BlobManager = BlobManager; |
| |
| |
| |
| BlobManager.prototype.createBlob = function(ctx, serverCall) { |
| throw new Error('Method CreateBlob not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.putBlob = function(ctx, serverCall, br) { |
| throw new Error('Method PutBlob not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.commitBlob = function(ctx, serverCall, br) { |
| throw new Error('Method CommitBlob not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.getBlobSize = function(ctx, serverCall, br) { |
| throw new Error('Method GetBlobSize not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.deleteBlob = function(ctx, serverCall, br) { |
| throw new Error('Method DeleteBlob not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.getBlob = function(ctx, serverCall, br, offset) { |
| throw new Error('Method GetBlob not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.fetchBlob = function(ctx, serverCall, br, priority) { |
| throw new Error('Method FetchBlob not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.pinBlob = function(ctx, serverCall, br) { |
| throw new Error('Method PinBlob not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.unpinBlob = function(ctx, serverCall, br) { |
| throw new Error('Method UnpinBlob not implemented'); |
| }; |
| |
| |
| BlobManager.prototype.keepBlob = function(ctx, serverCall, br, rank) { |
| throw new Error('Method KeepBlob not implemented'); |
| }; |
| |
| |
| |
| BlobManager.prototype._serviceDescription = { |
| name: 'BlobManager', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// BlobManager is the interface for blob operations.", |
| embeds: [], |
| methods: [ |
| |
| |
| { |
| name: 'CreateBlob', |
| doc: "// API for resumable blob creation (append-only). After commit, a blob\n// is immutable. Before commit, the BlobRef can be used with PutBlob,\n// GetBlobSize, DeleteBlob, and CommitBlob. After commit, PutBlob and\n// CommitBlob can no longer be used. Blob creation can be resumed by\n// obtaining the current blob size with GetBlobSize and appending to the\n// blob via PutBlob.\n//\n// CreateBlob returns a BlobRef for a newly created blob.", |
| inArgs: [], |
| outArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'PutBlob', |
| doc: "// PutBlob appends the byte stream to the blob.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: { |
| name: '', |
| doc: '', |
| type: _type3 |
| }, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'CommitBlob', |
| doc: "// CommitBlob marks the blob as immutable.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetBlobSize', |
| doc: "// GetBlobSize returns the count of bytes written as part of the blob\n// (committed or uncommitted).", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: vdl.types.INT64 |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'DeleteBlob', |
| doc: "// DeleteBlob locally deletes the blob (committed or uncommitted).", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetBlob', |
| doc: "// GetBlob returns the byte stream from a committed blob starting at offset.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| { |
| name: 'offset', |
| doc: "", |
| type: vdl.types.INT64 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: { |
| name: '', |
| doc: '', |
| type: _type3 |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'FetchBlob', |
| doc: "// FetchBlob initiates fetching a blob if not locally found. priority\n// controls the network priority of the blob. Higher priority blobs are\n// fetched before the lower priority ones. However an ongoing blob\n// transfer is not interrupted. Status updates are streamed back to the\n// client as fetch is in progress.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| { |
| name: 'priority', |
| doc: "", |
| type: vdl.types.UINT64 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: { |
| name: '', |
| doc: '', |
| type: _typeBlobFetchStatus |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'PinBlob', |
| doc: "// PinBlob locally pins the blob so that it is not evicted.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'UnpinBlob', |
| doc: "// UnpinBlob locally unpins the blob so that it can be evicted if needed.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'KeepBlob', |
| doc: "// KeepBlob locally caches the blob with the specified rank. Lower\n// ranked blobs are more eagerly evicted.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| { |
| name: 'rank', |
| doc: "", |
| type: vdl.types.UINT64 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| ] |
| }; |
| |
| |
| |
| function SchemaManager(){} |
| module.exports.SchemaManager = SchemaManager; |
| |
| |
| |
| SchemaManager.prototype.getSchemaMetadata = function(ctx, serverCall) { |
| throw new Error('Method GetSchemaMetadata not implemented'); |
| }; |
| |
| |
| SchemaManager.prototype.setSchemaMetadata = function(ctx, serverCall, metadata) { |
| throw new Error('Method SetSchemaMetadata not implemented'); |
| }; |
| |
| |
| |
| SchemaManager.prototype._serviceDescription = { |
| name: 'SchemaManager', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// SchemaManager implements the API for managing schema metadata attached\n// to a Database.", |
| embeds: [], |
| methods: [ |
| |
| |
| { |
| name: 'GetSchemaMetadata', |
| doc: "// GetSchemaMetadata retrieves schema metadata for this database.\n//\n// Requires: Client must have at least Read access on the Database.", |
| inArgs: [], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: _typeSchemaMetadata |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'SetSchemaMetadata', |
| doc: "// SetSchemaMetadata stores schema metadata for this database.\n//\n// Requires: Client must have at least Write access on the Database.", |
| inArgs: [{ |
| name: 'metadata', |
| doc: "", |
| type: _typeSchemaMetadata |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| ] |
| }; |
| |
| |
| |
| function ConflictManager(){} |
| module.exports.ConflictManager = ConflictManager; |
| |
| |
| |
| ConflictManager.prototype.startConflictResolver = function(ctx, serverCall) { |
| throw new Error('Method StartConflictResolver not implemented'); |
| }; |
| |
| |
| |
| ConflictManager.prototype._serviceDescription = { |
| name: 'ConflictManager', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// ConflictManager interface provides all the methods necessary to handle\n// conflict resolution for a given database.", |
| embeds: [], |
| methods: [ |
| |
| |
| { |
| name: 'StartConflictResolver', |
| doc: "// StartConflictResolver registers a resolver for the database that is\n// associated with this ConflictManager and creates a stream to receive\n// conflicts and send resolutions.\n// Batches of ConflictInfos will be sent over with the Continued field\n// within the ConflictInfo representing the batch boundary. Client must\n// respond with a batch of ResolutionInfos in the same fashion.\n// A key is under conflict if two different values were written to it\n// concurrently (in logical time), i.e. neither value is an ancestor of the\n// other in the history graph.\n// A key under conflict can be a part of a batch committed on local or\n// remote or both syncbases. ConflictInfos for all keys in these two batches\n// are grouped together. These keys may themselves be under conflict; the\n// presented batch is a transitive closure of all batches containing keys\n// under conflict.\n// For example, for local batch {key1, key2} and remote batch {key1, key3},\n// the batch sent for conflict resolution will be {key1, key2, key3}.\n// If there was another concurrent batch {key2, key4}, then the batch sent\n// for conflict resolution will be {key1, key2, key3, key4}.", |
| inArgs: [], |
| outArgs: [], |
| inStream: { |
| name: '', |
| doc: '', |
| type: _typeResolutionInfo |
| }, |
| outStream: { |
| name: '', |
| doc: '', |
| type: _typeConflictInfo |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| ] |
| }; |
| |
| |
| |
| function Database(){} |
| module.exports.Database = Database; |
| |
| |
| |
| Database.prototype.create = function(ctx, serverCall, metadata, perms) { |
| throw new Error('Method Create not implemented'); |
| }; |
| |
| |
| Database.prototype.destroy = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Destroy not implemented'); |
| }; |
| |
| |
| Database.prototype.exists = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Exists not implemented'); |
| }; |
| |
| |
| Database.prototype.exec = function(ctx, serverCall, schemaVersion, query) { |
| throw new Error('Method Exec not implemented'); |
| }; |
| |
| |
| Database.prototype.beginBatch = function(ctx, serverCall, schemaVersion, bo) { |
| throw new Error('Method BeginBatch not implemented'); |
| }; |
| |
| |
| Database.prototype.commit = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Commit not implemented'); |
| }; |
| |
| |
| Database.prototype.abort = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Abort not implemented'); |
| }; |
| |
| |
| Database.prototype.setPermissions = function(ctx, serverCall, perms, version) { |
| throw new Error('Method SetPermissions not implemented'); |
| }; |
| |
| |
| Database.prototype.getPermissions = function(ctx, serverCall) { |
| throw new Error('Method GetPermissions not implemented'); |
| }; |
| |
| |
| Database.prototype.getResumeMarker = function(ctx, serverCall) { |
| throw new Error('Method GetResumeMarker not implemented'); |
| }; |
| |
| |
| Database.prototype.watchGlob = function(ctx, serverCall, req) { |
| throw new Error('Method WatchGlob not implemented'); |
| }; |
| |
| |
| Database.prototype.getSyncGroupNames = function(ctx, serverCall) { |
| throw new Error('Method GetSyncGroupNames not implemented'); |
| }; |
| |
| |
| Database.prototype.createSyncGroup = function(ctx, serverCall, sgName, spec, myInfo) { |
| throw new Error('Method CreateSyncGroup not implemented'); |
| }; |
| |
| |
| Database.prototype.joinSyncGroup = function(ctx, serverCall, sgName, myInfo) { |
| throw new Error('Method JoinSyncGroup not implemented'); |
| }; |
| |
| |
| Database.prototype.leaveSyncGroup = function(ctx, serverCall, sgName) { |
| throw new Error('Method LeaveSyncGroup not implemented'); |
| }; |
| |
| |
| Database.prototype.destroySyncGroup = function(ctx, serverCall, sgName) { |
| throw new Error('Method DestroySyncGroup not implemented'); |
| }; |
| |
| |
| Database.prototype.ejectFromSyncGroup = function(ctx, serverCall, sgName, member) { |
| throw new Error('Method EjectFromSyncGroup not implemented'); |
| }; |
| |
| |
| Database.prototype.getSyncGroupSpec = function(ctx, serverCall, sgName) { |
| throw new Error('Method GetSyncGroupSpec not implemented'); |
| }; |
| |
| |
| Database.prototype.setSyncGroupSpec = function(ctx, serverCall, sgName, spec, version) { |
| throw new Error('Method SetSyncGroupSpec not implemented'); |
| }; |
| |
| |
| Database.prototype.getSyncGroupMembers = function(ctx, serverCall, sgName) { |
| throw new Error('Method GetSyncGroupMembers not implemented'); |
| }; |
| |
| |
| Database.prototype.createBlob = function(ctx, serverCall) { |
| throw new Error('Method CreateBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.putBlob = function(ctx, serverCall, br) { |
| throw new Error('Method PutBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.commitBlob = function(ctx, serverCall, br) { |
| throw new Error('Method CommitBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.getBlobSize = function(ctx, serverCall, br) { |
| throw new Error('Method GetBlobSize not implemented'); |
| }; |
| |
| |
| Database.prototype.deleteBlob = function(ctx, serverCall, br) { |
| throw new Error('Method DeleteBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.getBlob = function(ctx, serverCall, br, offset) { |
| throw new Error('Method GetBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.fetchBlob = function(ctx, serverCall, br, priority) { |
| throw new Error('Method FetchBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.pinBlob = function(ctx, serverCall, br) { |
| throw new Error('Method PinBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.unpinBlob = function(ctx, serverCall, br) { |
| throw new Error('Method UnpinBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.keepBlob = function(ctx, serverCall, br, rank) { |
| throw new Error('Method KeepBlob not implemented'); |
| }; |
| |
| |
| Database.prototype.getSchemaMetadata = function(ctx, serverCall) { |
| throw new Error('Method GetSchemaMetadata not implemented'); |
| }; |
| |
| |
| Database.prototype.setSchemaMetadata = function(ctx, serverCall, metadata) { |
| throw new Error('Method SetSchemaMetadata not implemented'); |
| }; |
| |
| |
| Database.prototype.startConflictResolver = function(ctx, serverCall) { |
| throw new Error('Method StartConflictResolver not implemented'); |
| }; |
| |
| |
| |
| Database.prototype._serviceDescription = { |
| name: 'Database', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// Database represents a collection of Tables. Batches, queries, sync, watch,\n// etc. all operate at the Database level.\n// Database.Glob operates over Table names.\n// Param schemaVersion is the version number that the client expects the database\n// to be at. To disable schema version checking, pass -1.\n//\n// TODO(sadovsky): Add Watch method.", |
| embeds: [{ |
| name: 'Object', |
| pkgPath: 'v.io/v23/services/permissions', |
| doc: "// Object provides access control for Vanadium objects.\n//\n// Vanadium services implementing dynamic access control would typically embed\n// this interface and tag additional methods defined by the service with one of\n// Admin, Read, Write, Resolve etc. For example, the VDL definition of the\n// object would be:\n//\n// package mypackage\n//\n// import \"v.io/v23/security/access\"\n// import \"v.io/v23/services/permissions\"\n//\n// type MyObject interface {\n// permissions.Object\n// MyRead() (string, error) {access.Read}\n// MyWrite(string) error {access.Write}\n// }\n//\n// If the set of pre-defined tags is insufficient, services may define their\n// own tag type and annotate all methods with this new type.\n//\n// Instead of embedding this Object interface, define SetPermissions and\n// GetPermissions in their own interface. Authorization policies will typically\n// respect annotations of a single type. For example, the VDL definition of an\n// object would be:\n//\n// package mypackage\n//\n// import \"v.io/v23/security/access\"\n//\n// type MyTag string\n//\n// const (\n// Blue = MyTag(\"Blue\")\n// Red = MyTag(\"Red\")\n// )\n//\n// type MyObject interface {\n// MyMethod() (string, error) {Blue}\n//\n// // Allow clients to change access via the access.Object interface:\n// SetPermissions(perms access.Permissions, version string) error {Red}\n// GetPermissions() (perms access.Permissions, version string, err error) {Blue}\n// }" |
| }, |
| { |
| name: 'DatabaseWatcher', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// DatabaseWatcher allows a client to watch for updates in the database.\n// For each watched request, the client will receive a reliable stream of watch\n// events without re-ordering. See watch.GlobWatcher for a detailed explanation\n// of the behavior.\n// TODO(rogulenko): Currently the only supported watch patterns are\n// 'table/row*'. Consider changing that.\n//\n// The watching is done by starting a streaming RPC. The argument to the RPC\n// contains the ResumeMarker that points to a particular place in the database\n// event log. The result stream consists of a never-ending sequence of Change\n// messages (until the call fails or is canceled). Each Change contains the\n// Name field in the form \"<tableName>/<rowKey>\" and the Value field of the\n// StoreChange type. If the client has no access to a row specified in a change,\n// that change is excluded from the result stream.\n//\n// The DatabaseWatcher is designed to be used in the following way:\n// 1) begin a read-only batch\n// 2) read all information your app needs\n// 3) read the ResumeMarker\n// 4) abort the batch\n// 5) start watching changes to the data using the ResumeMarker\n// In this configuration the client doesn't miss any changes." |
| }, |
| { |
| name: 'SyncGroupManager', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// SyncGroupManager is the interface for SyncGroup operations.\n// TODO(hpucha): Add blessings to create/join and add a refresh method." |
| }, |
| { |
| name: 'BlobManager', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// BlobManager is the interface for blob operations." |
| }, |
| { |
| name: 'SchemaManager', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// SchemaManager implements the API for managing schema metadata attached\n// to a Database." |
| }, |
| { |
| name: 'ConflictManager', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// ConflictManager interface provides all the methods necessary to handle\n// conflict resolution for a given database." |
| }, |
| ], |
| methods: [ |
| |
| |
| { |
| name: 'Create', |
| doc: "// Create creates this Database.\n// If perms is nil, we inherit (copy) the App perms.\n// Create requires the caller to have Write permission at the App.", |
| inArgs: [{ |
| name: 'metadata', |
| doc: "", |
| type: _type7 |
| }, |
| { |
| name: 'perms', |
| doc: "", |
| type: new access.Permissions()._type |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Destroy', |
| doc: "// Destroy destroys this Database, permanently removing all of its data.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Exists', |
| doc: "// Exists returns true only if this Database exists. Insufficient permissions\n// cause Exists to return false instead of an error.\n// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy\n// do not exist.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: vdl.types.BOOL |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Exec', |
| doc: "// Exec executes a syncQL query and returns all results as specified by in the\n// query's select clause. Concurrency semantics are documented in model.go.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'query', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: { |
| name: '', |
| doc: '', |
| type: _type8 |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'BeginBatch', |
| doc: "// BeginBatch creates a new batch. It returns an App-relative name for a\n// Database handle bound to this batch. If this Database is already bound to a\n// batch, BeginBatch() will fail with ErrBoundToBatch. Concurrency semantics\n// are documented in model.go.\n// TODO(sadovsky): make BatchOptions optional", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'bo', |
| doc: "", |
| type: _typeBatchOptions |
| }, |
| ], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Commit', |
| doc: "// Commit persists the pending changes to the database.\n// If this Database is not bound to a batch, Commit() will fail with\n// ErrNotBoundToBatch.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Abort', |
| doc: "// Abort notifies the server that any pending changes can be discarded.\n// It is not strictly required, but it may allow the server to release locks\n// or other resources sooner than if it was not called.\n// If this Database is not bound to a batch, Abort() will fail with\n// ErrNotBoundToBatch.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'SetPermissions', |
| doc: "// SetPermissions replaces the current Permissions for an object. version\n// allows for optional, optimistic concurrency control. If non-empty,\n// version's value must come from GetPermissions. If any client has\n// successfully called SetPermissions in the meantime, the version will be\n// stale and SetPermissions will fail. If empty, SetPermissions performs an\n// unconditional update.\n//\n// Permissions objects are expected to be small. It is up to the\n// implementation to define the exact limit, though it should probably be\n// around 100KB. Large lists of principals can be represented concisely using\n// blessings.\n//\n// There is some ambiguity when calling SetPermissions on a mount point.\n// Does it affect the mount itself or does it affect the service endpoint\n// that the mount points to? The chosen behavior is that it affects the\n// service endpoint. To modify the mount point's Permissions, use\n// ResolveToMountTable to get an endpoint and call SetPermissions on that.\n// This means that clients must know when a name refers to a mount point to\n// change its Permissions.", |
| inArgs: [{ |
| name: 'perms', |
| doc: "", |
| type: new access.Permissions()._type |
| }, |
| { |
| name: 'version', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Admin", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetPermissions', |
| doc: "// GetPermissions returns the complete, current Permissions for an object. The\n// returned version can be passed to a subsequent call to SetPermissions for\n// optimistic concurrency control. A successful call to SetPermissions will\n// invalidate version, and the client must call GetPermissions again to get\n// the current version.", |
| inArgs: [], |
| outArgs: [{ |
| name: 'perms', |
| doc: "", |
| type: new access.Permissions()._type |
| }, |
| { |
| name: 'version', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Admin", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetResumeMarker', |
| doc: "// GetResumeMarker returns the ResumeMarker that points to the current end\n// of the event log. GetResumeMarker() can be called on a batch.", |
| inArgs: [], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: new watch.ResumeMarker()._type |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'WatchGlob', |
| doc: "// WatchGlob returns a stream of changes that match a pattern.", |
| inArgs: [{ |
| name: 'req', |
| doc: "", |
| type: new watch.GlobRequest()._type |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: { |
| name: '', |
| doc: '', |
| type: new watch.Change()._type |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Resolve", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetSyncGroupNames', |
| doc: "// GetSyncGroupNames returns the global names of all SyncGroups attached to\n// this database.", |
| inArgs: [], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: _type1 |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'CreateSyncGroup', |
| doc: "// CreateSyncGroup creates a new SyncGroup with the given spec.\n//\n// Requires: Client must have at least Read access on the Database; prefix ACL\n// must exist at each SyncGroup prefix; Client must have at least Read access\n// on each of these prefix ACLs.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'spec', |
| doc: "", |
| type: _typeSyncGroupSpec |
| }, |
| { |
| name: 'myInfo', |
| doc: "", |
| type: _typeSyncGroupMemberInfo |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'JoinSyncGroup', |
| doc: "// JoinSyncGroup joins the SyncGroup.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'myInfo', |
| doc: "", |
| type: _typeSyncGroupMemberInfo |
| }, |
| ], |
| outArgs: [{ |
| name: 'spec', |
| doc: "", |
| type: _typeSyncGroupSpec |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'LeaveSyncGroup', |
| doc: "// LeaveSyncGroup leaves the SyncGroup. Previously synced data will continue\n// to be available.\n//\n// Requires: Client must have at least Read access on the Database.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'DestroySyncGroup', |
| doc: "// DestroySyncGroup destroys the SyncGroup. Previously synced data will\n// continue to be available to all members.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'EjectFromSyncGroup', |
| doc: "// EjectFromSyncGroup ejects a member from the SyncGroup. The ejected member\n// will not be able to sync further, but will retain any data it has already\n// synced.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'member', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetSyncGroupSpec', |
| doc: "// GetSyncGroupSpec gets the SyncGroup spec. version allows for atomic\n// read-modify-write of the spec - see comment for SetSyncGroupSpec.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [{ |
| name: 'spec', |
| doc: "", |
| type: _typeSyncGroupSpec |
| }, |
| { |
| name: 'version', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'SetSyncGroupSpec', |
| doc: "// SetSyncGroupSpec sets the SyncGroup spec. version may be either empty or\n// the value from a previous Get. If not empty, Set will only succeed if the\n// current version matches the specified one.\n//\n// Requires: Client must have at least Read access on the Database, and must\n// have Admin access on the SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'spec', |
| doc: "", |
| type: _typeSyncGroupSpec |
| }, |
| { |
| name: 'version', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetSyncGroupMembers', |
| doc: "// GetSyncGroupMembers gets the info objects for members of the SyncGroup.\n//\n// Requires: Client must have at least Read access on the Database and on the\n// SyncGroup ACL.", |
| inArgs: [{ |
| name: 'sgName', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [{ |
| name: 'members', |
| doc: "", |
| type: _type2 |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'CreateBlob', |
| doc: "// API for resumable blob creation (append-only). After commit, a blob\n// is immutable. Before commit, the BlobRef can be used with PutBlob,\n// GetBlobSize, DeleteBlob, and CommitBlob. After commit, PutBlob and\n// CommitBlob can no longer be used. Blob creation can be resumed by\n// obtaining the current blob size with GetBlobSize and appending to the\n// blob via PutBlob.\n//\n// CreateBlob returns a BlobRef for a newly created blob.", |
| inArgs: [], |
| outArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'PutBlob', |
| doc: "// PutBlob appends the byte stream to the blob.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: { |
| name: '', |
| doc: '', |
| type: _type3 |
| }, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'CommitBlob', |
| doc: "// CommitBlob marks the blob as immutable.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetBlobSize', |
| doc: "// GetBlobSize returns the count of bytes written as part of the blob\n// (committed or uncommitted).", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: vdl.types.INT64 |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'DeleteBlob', |
| doc: "// DeleteBlob locally deletes the blob (committed or uncommitted).", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetBlob', |
| doc: "// GetBlob returns the byte stream from a committed blob starting at offset.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| { |
| name: 'offset', |
| doc: "", |
| type: vdl.types.INT64 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: { |
| name: '', |
| doc: '', |
| type: _type3 |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'FetchBlob', |
| doc: "// FetchBlob initiates fetching a blob if not locally found. priority\n// controls the network priority of the blob. Higher priority blobs are\n// fetched before the lower priority ones. However an ongoing blob\n// transfer is not interrupted. Status updates are streamed back to the\n// client as fetch is in progress.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| { |
| name: 'priority', |
| doc: "", |
| type: vdl.types.UINT64 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: { |
| name: '', |
| doc: '', |
| type: _typeBlobFetchStatus |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'PinBlob', |
| doc: "// PinBlob locally pins the blob so that it is not evicted.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'UnpinBlob', |
| doc: "// UnpinBlob locally unpins the blob so that it can be evicted if needed.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'KeepBlob', |
| doc: "// KeepBlob locally caches the blob with the specified rank. Lower\n// ranked blobs are more eagerly evicted.", |
| inArgs: [{ |
| name: 'br', |
| doc: "", |
| type: _typeBlobRef |
| }, |
| { |
| name: 'rank', |
| doc: "", |
| type: vdl.types.UINT64 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetSchemaMetadata', |
| doc: "// GetSchemaMetadata retrieves schema metadata for this database.\n//\n// Requires: Client must have at least Read access on the Database.", |
| inArgs: [], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: _typeSchemaMetadata |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'SetSchemaMetadata', |
| doc: "// SetSchemaMetadata stores schema metadata for this database.\n//\n// Requires: Client must have at least Write access on the Database.", |
| inArgs: [{ |
| name: 'metadata', |
| doc: "", |
| type: _typeSchemaMetadata |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'StartConflictResolver', |
| doc: "// StartConflictResolver registers a resolver for the database that is\n// associated with this ConflictManager and creates a stream to receive\n// conflicts and send resolutions.\n// Batches of ConflictInfos will be sent over with the Continued field\n// within the ConflictInfo representing the batch boundary. Client must\n// respond with a batch of ResolutionInfos in the same fashion.\n// A key is under conflict if two different values were written to it\n// concurrently (in logical time), i.e. neither value is an ancestor of the\n// other in the history graph.\n// A key under conflict can be a part of a batch committed on local or\n// remote or both syncbases. ConflictInfos for all keys in these two batches\n// are grouped together. These keys may themselves be under conflict; the\n// presented batch is a transitive closure of all batches containing keys\n// under conflict.\n// For example, for local batch {key1, key2} and remote batch {key1, key3},\n// the batch sent for conflict resolution will be {key1, key2, key3}.\n// If there was another concurrent batch {key2, key4}, then the batch sent\n// for conflict resolution will be {key1, key2, key3, key4}.", |
| inArgs: [], |
| outArgs: [], |
| inStream: { |
| name: '', |
| doc: '', |
| type: _typeResolutionInfo |
| }, |
| outStream: { |
| name: '', |
| doc: '', |
| type: _typeConflictInfo |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| ] |
| }; |
| |
| |
| |
| function Table(){} |
| module.exports.Table = Table; |
| |
| |
| |
| Table.prototype.create = function(ctx, serverCall, schemaVersion, perms) { |
| throw new Error('Method Create not implemented'); |
| }; |
| |
| |
| Table.prototype.destroy = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Destroy not implemented'); |
| }; |
| |
| |
| Table.prototype.exists = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Exists not implemented'); |
| }; |
| |
| |
| Table.prototype.deleteRange = function(ctx, serverCall, schemaVersion, start, limit) { |
| throw new Error('Method DeleteRange not implemented'); |
| }; |
| |
| |
| Table.prototype.scan = function(ctx, serverCall, schemaVersion, start, limit) { |
| throw new Error('Method Scan not implemented'); |
| }; |
| |
| |
| Table.prototype.getPermissions = function(ctx, serverCall, schemaVersion, key) { |
| throw new Error('Method GetPermissions not implemented'); |
| }; |
| |
| |
| Table.prototype.setPermissions = function(ctx, serverCall, schemaVersion, prefix, perms) { |
| throw new Error('Method SetPermissions not implemented'); |
| }; |
| |
| |
| Table.prototype.deletePermissions = function(ctx, serverCall, schemaVersion, prefix) { |
| throw new Error('Method DeletePermissions not implemented'); |
| }; |
| |
| |
| |
| Table.prototype._serviceDescription = { |
| name: 'Table', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// Table represents a collection of Rows.\n// Table.Glob operates over the primary keys of Rows in the Table.\n// SchemaVersion is the version number that the client expects the database\n// to be at. To disable schema version checking, pass -1.", |
| embeds: [], |
| methods: [ |
| |
| |
| { |
| name: 'Create', |
| doc: "// Create creates this Table.\n// If perms is nil, we inherit (copy) the Database perms.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'perms', |
| doc: "", |
| type: new access.Permissions()._type |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Destroy', |
| doc: "// Destroy destroys this Table.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Exists', |
| doc: "// Exists returns true only if this Table exists. Insufficient permissions\n// cause Exists to return false instead of an error.\n// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy\n// do not exist.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: vdl.types.BOOL |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'DeleteRange', |
| doc: "// DeleteRange deletes all rows in the given half-open range [start, limit).\n// If limit is \"\", all rows with keys >= start are included.\n// TODO(sadovsky): Delete prefix perms fully covered by the row range?", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'start', |
| doc: "", |
| type: _type3 |
| }, |
| { |
| name: 'limit', |
| doc: "", |
| type: _type3 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Scan', |
| doc: "// Scan returns all rows in the given half-open range [start, limit). If limit\n// is \"\", all rows with keys >= start are included. Concurrency semantics are\n// documented in model.go.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'start', |
| doc: "", |
| type: _type3 |
| }, |
| { |
| name: 'limit', |
| doc: "", |
| type: _type3 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: { |
| name: '', |
| doc: '', |
| type: _typeKeyValue |
| }, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'GetPermissions', |
| doc: "// GetPermissions returns an array of (prefix, perms) pairs. The array is\n// sorted from longest prefix to shortest, so element zero is the one that\n// applies to the row with the given key. The last element is always the\n// prefix \"\" which represents the table's permissions -- the array will always\n// have at least one element.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'key', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: _type9 |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Admin", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'SetPermissions', |
| doc: "// SetPermissions sets the permissions for all current and future rows with\n// the given prefix. If the prefix overlaps with an existing prefix, the\n// longest prefix that matches a row applies. For example:\n// SetPermissions(ctx, Prefix(\"a/b\"), perms1)\n// SetPermissions(ctx, Prefix(\"a/b/c\"), perms2)\n// The permissions for row \"a/b/1\" are perms1, and the permissions for row\n// \"a/b/c/1\" are perms2.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'prefix', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| { |
| name: 'perms', |
| doc: "", |
| type: new access.Permissions()._type |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Admin", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'DeletePermissions', |
| doc: "// DeletePermissions deletes the permissions for the specified prefix. Any\n// rows covered by this prefix will use the next longest prefix's permissions\n// (see the array returned by GetPermissions).", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'prefix', |
| doc: "", |
| type: vdl.types.STRING |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Admin", true), new access.Tag()._type), ] |
| }, |
| |
| ] |
| }; |
| |
| |
| |
| function Row(){} |
| module.exports.Row = Row; |
| |
| |
| |
| Row.prototype.exists = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Exists not implemented'); |
| }; |
| |
| |
| Row.prototype.get = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Get not implemented'); |
| }; |
| |
| |
| Row.prototype.put = function(ctx, serverCall, schemaVersion, value) { |
| throw new Error('Method Put not implemented'); |
| }; |
| |
| |
| Row.prototype.delete = function(ctx, serverCall, schemaVersion) { |
| throw new Error('Method Delete not implemented'); |
| }; |
| |
| |
| |
| Row.prototype._serviceDescription = { |
| name: 'Row', |
| pkgPath: 'v.io/v23/services/syncbase/nosql', |
| doc: "// Row represents a single row in a Table.\n// All access checks are performed against the most specific matching prefix\n// permissions in the Table.\n// SchemaVersion is the version number that the client expects the database\n// to be at. To disable schema version checking, pass -1.\n// NOTE(sadovsky): Currently we send []byte values over the wire for Get, Put,\n// and Scan. If there's a way to avoid encoding/decoding on the server side, we\n// can use vdl.Value everywhere without sacrificing performance.", |
| embeds: [], |
| methods: [ |
| |
| |
| { |
| name: 'Exists', |
| doc: "// Exists returns true only if this Row exists. Insufficient permissions\n// cause Exists to return false instead of an error.\n// TODO(ivanpi): Exists may fail with an error if higher levels of hierarchy\n// do not exist.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: vdl.types.BOOL |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Get', |
| doc: "// Get returns the value for this Row.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [{ |
| name: '', |
| doc: "", |
| type: _type3 |
| }, |
| ], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Read", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Put', |
| doc: "// Put writes the given value for this Row.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| { |
| name: 'value', |
| doc: "", |
| type: _type3 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| |
| { |
| name: 'Delete', |
| doc: "// Delete deletes this Row.", |
| inArgs: [{ |
| name: 'schemaVersion', |
| doc: "", |
| type: vdl.types.INT32 |
| }, |
| ], |
| outArgs: [], |
| inStream: null, |
| outStream: null, |
| tags: [canonicalize.reduce(new access.Tag("Write", true), new access.Tag()._type), ] |
| }, |
| |
| ] |
| }; |
| |
| |
| |
| |
| |
| |
| |