blob: 3b95e17b6e66371fe9965cfe9afcb4def032332e [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.
var error = require('../error');
var format = require('util').format;
var ms = require('ms');
var pass = require('./pass');
var syncbase = require('syncbase');
var vanadium = require('vanadium');
var verror = vanadium.verror;
var waterfall = require('run-waterfall');
module.exports = create;
// Creates the syncbase structure up to the databse level. The database will be
// mounted as: <name>/reader/db.
function create(context, name, done) {
var tasks = [
pass(context, name),
createApp,
createDB
];
waterfall(tasks, done);
}
function createApp(context, name, callback) {
var service = syncbase.newService(name);
var app = service.app('reader');
var ctx = context.withTimeout(ms('5s'));
var permissions = {};
app.create(ctx, permissions, onapp);
function onapp(err) {
if (err && !(err instanceof verror.ExistError)) {
var template = 'syncbase - app.create(...) failed\n * name: %s';
var message = format(template, name);
error(err, message, callback);
} else {
callback(null, context, app);
}
}
}
function createDB(context, app, callback) {
var db = app.noSqlDatabase('db');
var ctx = context.withTimeout(ms('5s'));
var permissions = {};
db.create(ctx, permissions, ondb);
function ondb(err) {
if (err && !(err instanceof verror.ExistError)) {
var message = format('syncbase - db.create(...) failed');
error(err, message, callback);
} else {
callback(null, db);
}
}
}