File: lib/commands/kv/storebucketprops.js
'use strict';
var inherits = require('util').inherits;
var Joi = require('joi');
var StorePropsBase = require('./storepropsbase');
/**
* Provides the StoreBucketProps class, its builder, and its response.
* @module KV
*/
/**
* Command used to set the properties on a bucket in Riak.
*
* As a convenience, a builder class is provided:
*
* var storeProps = new StoreBucketProps.Builder()
* .withBucket('my-bucket')
* .withAllowMult(true)
* .build();
*
* See {{#crossLink "StoreBucketProps.Builder"}}StoreBucketProps.Builder{{/crossLink}}
*
* @class StoreBucketProps
* @constructor
* @param {Object} options The properties to store
* @param {String} options.bucket The bucket in riak.
* @param {String} [options.bucketType] The bucket type in riak. If not supplied 'default is used'
* @param {Function} callback The callback to be executed when the operation completes.
* @param {String} callback.err An error message. Will be null if no error.
* @param {Boolean} callback.response the response from Riak. This will be true.
* @param {Function} callback The callback to be executed when the operation completes.
* @param {String} callback.err An error message. Will ne null if no error.
* @param {Object} callback.response The response from Riak. This is an oject with all the bucket properties.
* @param {Object} callback.data additional error data. Will be null if no error.
* @extends StorePropsBase
*/
function StoreBucketProps(options, callback) {
StorePropsBase.call(this, options, 'RpbSetBucketReq', 'RpbSetBucketResp', callback);
this.validateOptions(options, schema, { allowUnknown: true });
}
inherits(StoreBucketProps, StorePropsBase);
StoreBucketProps.prototype.constructPbRequest = function() {
var protobuf = StoreBucketProps.super_.prototype.constructPbRequest.call(this);
protobuf.setBucket(new Buffer(this.options.bucket));
protobuf.setType(new Buffer(this.options.bucketType));
return protobuf;
};
var schema = Joi.object().keys({
bucket: Joi.string().required(),
bucketType: Joi.string().default('default')
});
/**
* A builder for constructing StoreBucketProps instances
*
* Rather than having to manually construct the __options__ and instantiating
* a StoreBucketProps directly, this builder may be used.
*
* var storeProps = new StoreBucketProps.Builder()
* .withAllowMult(true)
* .build();
*
* @class StoreBucketProps.Builder
* @constructor
* @extends StorePropsBase.Builder
*/
function Builder() {
StorePropsBase.Builder.call(this);
this.precommit = [];
this.postcommit = [];
}
inherits(Builder, StorePropsBase.Builder);
/**
* Set the bucket.
* @method withBucket
* @param {String} bucket the bucket in Riak
* @chainable
*/
Builder.prototype.withBucket = function(bucket) {
this.bucket = bucket;
return this;
};
/**
* Construct a StoreBucketProps instance.
* @method build
* @return {StoreBucketProps}
*/
Builder.prototype.build = function() {
var cb = this.callback;
delete this.callback;
return new StoreBucketProps(this, cb);
};
module.exports = StoreBucketProps;
module.exports.Builder = Builder;