You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ak...@apache.org on 2016/02/15 17:38:00 UTC
ignite git commit: IGNITE-843 WIP rework server side to promises.
Repository: ignite
Updated Branches:
refs/heads/ignite-843-rc2 2cb3d9caf -> 389c66256
IGNITE-843 WIP rework server side to promises.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/389c6625
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/389c6625
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/389c6625
Branch: refs/heads/ignite-843-rc2
Commit: 389c66256c827df16cf5c9ac3d28e40779e0b8eb
Parents: 2cb3d9c
Author: AKuznetsov <ak...@gridgain.com>
Authored: Mon Feb 15 23:37:51 2016 +0700
Committer: AKuznetsov <ak...@gridgain.com>
Committed: Mon Feb 15 23:37:51 2016 +0700
----------------------------------------------------------------------
.../control-center-web/src/main/js/package.json | 1 -
.../src/main/js/serve/mongo.js | 31 +-
.../src/main/js/serve/routes/admin.js | 140 +++----
.../src/main/js/serve/routes/agent.js | 32 +-
.../src/main/js/serve/routes/caches.js | 197 ++++------
.../src/main/js/serve/routes/clusters.js | 178 ++++-----
.../src/main/js/serve/routes/domains.js | 365 ++++++++-----------
.../src/main/js/serve/routes/igfs.js | 55 +--
.../src/main/js/serve/routes/notebooks.js | 104 ++----
.../src/main/js/serve/routes/profile.js | 7 +-
.../src/main/js/serve/routes/public.js | 20 +-
11 files changed, 451 insertions(+), 679 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/package.json
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/package.json b/modules/control-center-web/src/main/js/package.json
index 7910f35..9eef666 100644
--- a/modules/control-center-web/src/main/js/package.json
+++ b/modules/control-center-web/src/main/js/package.json
@@ -21,7 +21,6 @@
"node": ">=0.12.4"
},
"dependencies": {
- "async": "1.5.0",
"babel-eslint": "^4.1.6",
"body-parser": "~1.14.1",
"bootstrap-sass": "^3.3.6",
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/mongo.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/mongo.js b/modules/control-center-web/src/main/js/serve/mongo.js
index f6ff790..83d3b67 100644
--- a/modules/control-center-web/src/main/js/serve/mongo.js
+++ b/modules/control-center-web/src/main/js/serve/mongo.js
@@ -39,6 +39,8 @@ module.exports.factory = function(deepPopulatePlugin, passportMongo, settings, p
const ObjectId = mongoose.Schema.Types.ObjectId;
const result = { connection: mongoose.connection };
+ result.ObjectId = ObjectId;
+
// Define Account schema.
const AccountSchema = new Schema({
username: String,
@@ -527,26 +529,19 @@ module.exports.factory = function(deepPopulatePlugin, passportMongo, settings, p
// Define Notebook model.
result.Notebook = mongoose.model('Notebook', NotebookSchema);
- result.upsert = function(Model, data, cb) {
- if (data._id) {
- const id = data._id;
-
- delete data._id;
-
- Model.findOneAndUpdate({_id: id}, data, cb);
- }
- else
- new Model(data).save(cb);
+ result.handleError = function(res, err) {
+ // TODO IGNITE-843 Send error to admin
+ res.status(err.code || 500).send(err.message);
};
- result.processed = function(err, res) {
- if (err) {
- res.status(500).send(err);
-
- return false;
- }
-
- return true;
+ /**
+ * Query for user spaces.
+ *
+ * @param userId User ID.
+ * @returns {Promise}
+ */
+ result.spaces = function(userId) {
+ return result.Space.find({owner: userId}).exec();
};
// Registering the routes of all plugin modules
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/admin.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/admin.js b/modules/control-center-web/src/main/js/serve/routes/admin.js
index 2f26f7a..0736277 100644
--- a/modules/control-center-web/src/main/js/serve/routes/admin.js
+++ b/modules/control-center-web/src/main/js/serve/routes/admin.js
@@ -25,104 +25,106 @@ module.exports = {
};
module.exports.factory = function(_, express, nodemailer, settings, mongo) {
- return new Promise((resolve) => {
+ return new Promise((factoryResolve) => {
const router = new express.Router();
/**
* Get list of user accounts.
*/
- router.post('/list', function(req, res) {
- mongo.Account.find({}).sort('username').exec(function(err, users) {
- if (err)
- return res.status(500).send(err.message);
-
- res.json(users);
- });
+ router.post('/list', (req, res) => {
+ mongo.Account.find({}).sort('username').exec()
+ .then((users) => res.json(users))
+ .catch((err) => mongo.handleError(res, err));
});
// Remove user.
- router.post('/remove', function(req, res) {
+ router.post('/remove', (req, res) => {
const userId = req.body.userId;
- mongo.Account.findByIdAndRemove(userId, function(errAccount, user) {
- if (errAccount)
- return res.status(500).send(errAccount.message);
+ mongo.Account.findByIdAndRemove(userId).exec()
+ .then(() => mongo.spaces(userId))
+ .then((spaces) => {
+ const promises = [];
- mongo.Space.find({owner: userId}, function(errSpace, spaces) {
_.forEach(spaces, (space) => {
- mongo.Cluster.remove({space: space._id}).exec();
- mongo.Cache.remove({space: space._id}).exec();
- mongo.DomainModel.remove({space: space._id}).exec();
- mongo.Notebook.remove({space: space._id}).exec();
- mongo.Space.remove({owner: space._id}).exec();
+ promises.push(mongo.Cluster.remove({space: space._id}).exec());
+ promises.push(mongo.Cache.remove({space: space._id}).exec());
+ promises.push(mongo.DomainModel.remove({space: space._id}).exec());
+ promises.push(mongo.Notebook.remove({space: space._id}).exec());
+ promises.push(mongo.Space.remove({owner: space._id}).exec());
});
- });
-
- const transporter = {
- service: settings.smtp.service,
- auth: {
- user: settings.smtp.email,
- pass: settings.smtp.password
- }
- };
-
- if (transporter.service !== '' || transporter.auth.user !== '' || transporter.auth.pass !== '') {
- const mailer = nodemailer.createTransport(transporter);
-
- const mailOptions = {
- from: settings.smtp.address(settings.smtp.username, settings.smtp.email),
- to: settings.smtp.address(user.username, user.email),
- subject: 'Your account was deleted',
- text: 'You are receiving this e-mail because admin remove your account.\n\n' +
- '--------------\n' +
- 'Apache Ignite Web Console http://' + req.headers.host + '\n'
- };
-
- mailer.sendMail(mailOptions, function(errMailer) {
- if (errMailer)
- return res.status(503).send('Account was removed, but failed to send e-mail notification to user!<br />' + errMailer);
-
- res.sendStatus(200);
+
+ return Promise.all(promises);
+ })
+ .then(() => {
+ return new Promise((resolveMail, rejectMail) => {
+ const transporter = {
+ service: settings.smtp.service,
+ auth: {
+ user: settings.smtp.email,
+ pass: settings.smtp.password
+ }
+ };
+
+ if (transporter.service !== '' || transporter.auth.user !== '' || transporter.auth.pass !== '') {
+ const mailer = nodemailer.createTransport(transporter);
+
+ const mailOptions = {
+ from: settings.smtp.address(settings.smtp.username, settings.smtp.email),
+ to: settings.smtp.address(user.username, user.email),
+ subject: 'Your account was deleted',
+ text: 'You are receiving this e-mail because admin remove your account.\n\n' +
+ '--------------\n' +
+ settings.smtp.username + ' http://' + req.headers.host + '\n'
+ };
+
+ mailer.sendMail(mailOptions, (errMailer) => {
+ if (errMailer) {
+ rejectMail({
+ code: 503,
+ message: 'Account was removed, but failed to send e-mail notification to user!<br />' + errMailer
+ });
+ }
+ else
+ resolveMail();
+ });
+ }
+ else
+ rejectMail({code: 503, message: 'Account was removed, but failed to send e-mail notification to user, because mailer is not configured!'});
});
- }
- else
- res.sendStatus(200);
- });
+ })
+ .then(() => res.sendStatus(200))
+ .catch((err) => mongo.handleError(res, err));
});
// Save user.
- router.post('/save', function(req, res) {
- const userId = req.body.userId;
- const adminFlag = req.body.adminFlag;
+ router.post('/save', (req, res) => {
+ const params = req.body;
- mongo.Account.findByIdAndUpdate(userId, {admin: adminFlag}, function(err) {
- if (err)
- return res.status(500).send(err.message);
-
- res.sendStatus(200);
- });
+ mongo.Account.findByIdAndUpdate(params.userId, {admin: params.adminFlag}).exec()
+ .then(() => res.sendStatus(200))
+ .catch((err) => mongo.handleError(res, err));
});
// Become user.
- router.get('/become', function(req, res) {
- mongo.Account.findById(req.query.viewedUserId).exec(function(err, viewedUser) {
- if (err)
- return res.sendStatus(404);
-
- req.session.viewedUser = viewedUser;
+ router.get('/become', (req, res) => {
+ mongo.Account.findById(req.query.viewedUserId).exec()
+ .then((viewedUser) => {
+ req.session.viewedUser = viewedUser;
- return res.sendStatus(200);
- });
+ res.sendStatus(200);
+ })
+ .catch(() => res.sendStatus(404));
});
- // Become user.
- router.get('/revert/identity', function(req, res) {
+ // Revert to your identity.
+ router.get('/revert/identity', (req, res) => {
req.session.viewedUser = null;
return res.sendStatus(200);
});
- resolve(router);
+ factoryResolve(router);
});
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/agent.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/agent.js b/modules/control-center-web/src/main/js/serve/routes/agent.js
index 40e0c82..0451e52 100644
--- a/modules/control-center-web/src/main/js/serve/routes/agent.js
+++ b/modules/control-center-web/src/main/js/serve/routes/agent.js
@@ -57,7 +57,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
};
const _handleException = (res) => {
- return function(error) {
+ return (error) => {
if (_.isObject(error))
return res.status(error.code).send(error.message);
@@ -66,17 +66,17 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
};
/* Get grid topology. */
- router.get('/download/zip', function(req, res) {
+ router.get('/download/zip', (req, res) => {
const agentFld = settings.agent.file;
const agentZip = agentFld + '.zip';
const agentPathZip = 'public/agent/' + agentFld + '.zip';
- fs.stat(agentPathZip, function(err, stats) {
+ fs.stat(agentPathZip, (err, stats) => {
if (err)
return res.download(agentPathZip, agentZip);
// Read a zip file.
- fs.readFile(agentPathZip, function(errFs, data) {
+ fs.readFile(agentPathZip, (errFs, data) => {
if (errFs)
return res.download(agentPathZip, agentZip);
@@ -108,7 +108,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/* Get grid topology. */
- router.post('/topology', function(req, res) {
+ router.post('/topology', (req, res) => {
_client(req.currentUserId())
.then((client) => client.ignite(req.body.demo).cluster(req.body.attr, req.body.mtr))
.then((clusters) => res.json(clusters))
@@ -116,7 +116,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/* Execute query. */
- router.post('/query', function(req, res) {
+ router.post('/query', (req, res) => {
_client(req.currentUserId())
.then((client) => {
// Create sql query.
@@ -136,7 +136,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/* Execute query getAll. */
- router.post('/query/getAll', function(req, res) {
+ router.post('/query/getAll', (req, res) => {
_client(req.currentUserId())
.then((client) => {
// Create sql query.
@@ -148,7 +148,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
// Get query cursor.
const cursor = client.ignite(req.body.demo).cache(req.body.cacheName).query(qry);
- return new Promise(function(resolve) {
+ return new Promise((resolve) => {
cursor.getAll().then((rows) => resolve({meta: cursor.fieldsMetadata(), rows}));
});
})
@@ -157,7 +157,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/* Execute query. */
- router.post('/scan', function(req, res) {
+ router.post('/scan', (req, res) => {
_client(req.currentUserId())
.then((client) => {
// Create sql query.
@@ -178,7 +178,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/* Get next query page. */
- router.post('/query/fetch', function(req, res) {
+ router.post('/query/fetch', (req, res) => {
_client(req.currentUserId())
.then((client) => {
const cache = client.ignite(req.body.demo).cache(req.body.cacheName);
@@ -194,7 +194,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/* Close query cursor by id. */
- router.post('/query/close', function(req, res) {
+ router.post('/query/close', (req, res) => {
_client(req.currentUserId())
.then((client) => {
const cache = client.ignite(req.body.demo).cache(req.body.cacheName);
@@ -206,7 +206,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/* Get metadata for cache. */
- router.post('/cache/metadata', function(req, res) {
+ router.post('/cache/metadata', (req, res) => {
_client(req.currentUserId())
.then((client) => client.ignite(req.body.demo).cache(req.body.cacheName).metadata())
.then((caches) => {
@@ -292,14 +292,14 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/* Ping client. */
- router.post('/ping', function(req, res) {
+ router.post('/ping', (req, res) => {
_client(req.currentUserId())
.then(() => res.sendStatus(200))
.catch(_handleException(res));
});
/* Get JDBC drivers list. */
- router.post('/drivers', function(req, res) {
+ router.post('/drivers', (req, res) => {
_client(req.currentUserId())
.then((client) => client.availableDrivers())
.then((arr) => res.json(arr))
@@ -307,7 +307,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/** Get database schemas. */
- router.post('/schemas', function(req, res) {
+ router.post('/schemas', (req, res) => {
_client(req.currentUserId())
.then((client) => {
const args = req.body;
@@ -321,7 +321,7 @@ module.exports.factory = function(_, express, apacheIgnite, fs, JSZip, settings,
});
/** Get database tables. */
- router.post('/tables', function(req, res) {
+ router.post('/tables', (req, res) => {
_client(req.currentUserId())
.then((client) => {
const args = req.body;
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/caches.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/caches.js b/modules/control-center-web/src/main/js/serve/routes/caches.js
index 1f5a01c..77c3943 100644
--- a/modules/control-center-web/src/main/js/serve/routes/caches.js
+++ b/modules/control-center-web/src/main/js/serve/routes/caches.js
@@ -25,7 +25,7 @@ module.exports = {
};
module.exports.factory = function(_, express, mongo) {
- return new Promise((resolve) => {
+ return new Promise((factoryResolve) => {
const router = new express.Router();
/**
@@ -35,70 +35,33 @@ module.exports.factory = function(_, express, mongo) {
* @param res Response.
*/
router.post('/list', (req, res) => {
- const user_id = req.currentUserId();
+ const result = {};
+ let spacesIds = [];
// Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (mongo.processed(errSpace, res)) {
- const space_ids = spaces.map((value) => value._id);
-
- // Get all clusters for spaces.
- mongo.Cluster.find({space: {$in: space_ids}}, '_id name caches').sort('name').exec((errCluster, clusters) => {
- if (mongo.processed(errCluster, res)) {
- // Get all domain models for spaces.
- mongo.DomainModel.find({space: {$in: space_ids}}).sort('name').exec((errDomainModel, domains) => {
- if (mongo.processed(errDomainModel, res)) {
- // Get all caches for spaces.
- mongo.Cache.find({space: {$in: space_ids}}).sort('name').exec((err, caches) => {
- if (mongo.processed(err, res)) {
- _.forEach(clusters, (cluster) => {
- cluster.caches = _.filter(cluster.caches, (cacheId) => {
- return _.find(caches, {_id: cacheId});
- });
- });
-
- _.forEach(domains, (domain) => {
- domain.caches = _.filter(domain.caches, (cacheId) => {
- return _.find(caches, {_id: cacheId});
- });
- });
-
- _.forEach(caches, (cache) => {
- // Remove deleted clusters.
- cache.clusters = _.filter(cache.clusters, (clusterId) => {
- return _.findIndex(clusters, (cluster) => {
- return cluster._id.equals(clusterId);
- }) >= 0;
- });
-
- // Remove deleted domain models.
- cache.domains = _.filter(cache.domains, (metaId) => {
- return _.findIndex(domains, (domain) => {
- return domain._id.equals(metaId);
- }) >= 0;
- });
- });
-
- res.json({
- spaces,
- clusters: clusters.map((cluster) => {
- return {
- value: cluster._id,
- label: cluster.name,
- caches: cluster.caches
- };
- }),
- domains,
- caches
- });
- }
- });
- }
- });
- }
- });
- }
- });
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => {
+ result.spaces = spaces;
+ spacesIds = spaces.map((value) => value._id);
+
+ return mongo.Cluster.find({space: {$in: result.spacesIds}}).sort('name').exec();
+ })
+ .then((clusters) => {
+ result.clusters = clusters;
+
+ return mongo.DomainModel.find({space: {$in: spacesIds}}).sort('name').exec();
+ })
+ .then((domains) => {
+ result.domains = domains;
+
+ return mongo.Cache.find({space: {$in: spacesIds}}).sort('name').exec();
+ })
+ .then((caches) => {
+ result.caches = caches;
+
+ res.json(result);
+ })
+ .catch((err) => mongo.handleError(res, err));
});
/**
@@ -111,49 +74,30 @@ module.exports.factory = function(_, express, mongo) {
let cacheId = params._id;
if (params._id) {
- mongo.Cache.update({_id: cacheId}, params, {upsert: true}, (errCache) => {
- if (mongo.processed(errCache, res)) {
- mongo.Cluster.update({_id: {$in: clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, (errClusterAdd) => {
- if (mongo.processed(errClusterAdd, res)) {
- mongo.Cluster.update({_id: {$nin: clusters}}, {$pull: {caches: cacheId}}, {multi: true}, (errClusterPull) => {
- if (mongo.processed(errClusterPull, res)) {
- mongo.DomainModel.update({_id: {$in: domains}}, {$addToSet: {caches: cacheId}}, {multi: true}, (errDomainModelAdd) => {
- if (mongo.processed(errDomainModelAdd, res)) {
- mongo.DomainModel.update({_id: {$nin: domains}}, {$pull: {caches: cacheId}}, {multi: true}, (errDomainModelPull) => {
- if (mongo.processed(errDomainModelPull, res))
- res.send(params._id);
- });
- }
- });
- }
- });
- }
- });
- }
- });
+ mongo.Cache.update({_id: cacheId}, params, {upsert: true}).exec()
+ .then(() => mongo.Cluster.update({_id: {$in: clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}).exec())
+ .then(() => mongo.Cluster.update({_id: {$nin: clusters}}, {$pull: {caches: cacheId}}, {multi: true}).exec())
+ .then(() => mongo.DomainModel.update({_id: {$in: domains}}, {$addToSet: {caches: cacheId}}, {multi: true}).exec())
+ .then(() => mongo.DomainModel.update({_id: {$nin: domains}}, {$pull: {caches: cacheId}}, {multi: true}).exec())
+ .then(() => res.send(cacheId))
+ .catch((err) => mongo.handleError(res, err));
}
else {
- mongo.Cache.findOne({space: params.space, name: params.name}, (errCacheFind, cacheFound) => {
- if (mongo.processed(errCacheFind, res)) {
- if (cacheFound)
- return res.status(500).send('Cache with name: "' + cacheFound.name + '" already exist.');
-
- (new mongo.Cache(params)).save((errCacheSave, cache) => {
- if (mongo.processed(errCacheSave, res)) {
- cacheId = cache._id;
-
- mongo.Cluster.update({_id: {$in: clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, (errCluster) => {
- if (mongo.processed(errCluster, res)) {
- mongo.DomainModel.update({_id: {$in: domains}}, {$addToSet: {caches: cacheId}}, {multi: true}, (errDomainModel) => {
- if (mongo.processed(errDomainModel, res))
- res.send(cacheId);
- });
- }
- });
- }
- });
- }
- });
+ mongo.Cache.findOne({space: params.space, name: params.name}).exec()
+ .then((cache) => {
+ if (cache)
+ throw new Error('Cache with name: "' + cache.name + '" already exist.');
+
+ return (new mongo.Cache(params)).save();
+ })
+ .then((cache) => {
+ cacheId = cache._id;
+
+ return mongo.Cluster.update({_id: {$in: clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}).exec();
+ })
+ .then(() => mongo.DomainModel.update({_id: {$in: domains}}, {$addToSet: {caches: cacheId}}, {multi: true}).exec())
+ .then(() => res.send(cacheId))
+ .catch((err) => mongo.handleError(res, err));
}
});
@@ -161,41 +105,34 @@ module.exports.factory = function(_, express, mongo) {
* Remove cache by ._id.
*/
router.post('/remove', (req, res) => {
- mongo.Cache.remove(req.body, (err) => {
- if (mongo.processed(err, res))
- res.sendStatus(200);
- });
+ const params = req.body;
+ const cacheId = params._id;
+
+ mongo.Cluster.update({caches: {$in: [cacheId]}}, {$pull: {caches: cacheId}}, {multi: true}).exec()
+ .then(() => mongo.DomainModel.update({caches: {$in: [cacheId]}}, {$pull: {caches: cacheId}}, {multi: true}).exec())
+ .then(() => mongo.Cache.remove(params))
+ .then(() => res.sendStatus(200))
+ .catch((err) => mongo.handleError(res, err));
});
/**
* Remove all caches.
*/
router.post('/remove/all', (req, res) => {
- const user_id = req.currentUserId();
+ let spacesIds = [];
- // Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (mongo.processed(errSpace, res)) {
- const space_ids = spaces.map((value) => value._id);
-
- mongo.Cache.remove({space: {$in: space_ids}}, (errCache) => {
- if (errCache)
- return res.status(500).send(errCache.message);
-
- mongo.Cluster.update({space: {$in: space_ids}}, {caches: []}, {multi: true}, (errCluster) => {
- if (mongo.processed(errCluster, res)) {
- mongo.DomainModel.update({space: {$in: space_ids}}, {caches: []}, {multi: true}, (errDomainModel) => {
- if (mongo.processed(errDomainModel, res))
- res.sendStatus(200);
- });
- }
- });
- });
- }
- });
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => {
+ spacesIds = spaces.map((value) => value._id);
+
+ return mongo.Cluster.update({space: {$in: spacesIds}}, {caches: []}, {multi: true});
+ })
+ .then(() => mongo.DomainModel.update({space: {$in: spacesIds}}, {caches: []}, {multi: true}))
+ .then(() => mongo.Cache.remove({space: {$in: spacesIds}}))
+ .catch((err) => mongo.handleError(res, err));
});
- resolve(router);
+ factoryResolve(router);
});
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/clusters.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/clusters.js b/modules/control-center-web/src/main/js/serve/routes/clusters.js
index 256de5d..468e912 100644
--- a/modules/control-center-web/src/main/js/serve/routes/clusters.js
+++ b/modules/control-center-web/src/main/js/serve/routes/clusters.js
@@ -25,7 +25,7 @@ module.exports = {
};
module.exports.factory = function(_, express, mongo) {
- return new Promise((resolve) => {
+ return new Promise((factoryResolve) => {
const router = new express.Router();
/**
@@ -35,59 +35,32 @@ module.exports.factory = function(_, express, mongo) {
* @param res Response.
*/
router.post('/list', (req, res) => {
- const user_id = req.currentUserId();
-
- // Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (mongo.processed(errSpace, res)) {
- const space_ids = spaces.map((value) => value._id);
-
- // Get all caches for spaces.
- mongo.Cache.find({space: {$in: space_ids}}).sort('name').deepPopulate('domains').exec((errCache, caches) => {
- if (mongo.processed(errCache, res)) {
- // Get all IGFSs for spaces.
- mongo.Igfs.find({space: {$in: space_ids}}).sort('name').exec((errIgfs, igfss) => {
- if (mongo.processed(errIgfs, res)) {
- // Get all clusters for spaces.
- mongo.Cluster.find({space: {$in: space_ids}}).sort('name').deepPopulate(mongo.ClusterDefaultPopulate).exec((errCluster, clusters) => {
- if (mongo.processed(errCluster, res)) {
- _.forEach(caches, (cache) => {
- // Remove deleted caches.
- cache.clusters = _.filter(cache.clusters, (clusterId) => {
- return _.find(clusters, {_id: clusterId});
- });
- });
-
- _.forEach(igfss, (igfs) => {
- // Remove deleted caches.
- igfs.clusters = _.filter(igfs.clusters, (clusterId) => {
- return _.find(clusters, {_id: clusterId});
- });
- });
-
- _.forEach(clusters, (cluster) => {
- // Remove deleted caches.
- cluster.caches = _.filter(cluster.caches, (cacheId) => {
- return _.find(caches, {_id: cacheId});
- });
-
- // Remove deleted IGFS.
- cluster.igfss = _.filter(cluster.igfss, (igfsId) => {
- return _.findIndex(igfss, (igfs) => {
- return igfs._id.equals(igfsId);
- }) >= 0;
- });
- });
-
- res.json({ spaces, caches, igfss, clusters });
- }
- });
- }
- });
- }
- });
- }
- });
+ const result = {};
+ let spacesIds = [];
+
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => {
+ result.spaces = spaces;
+ spacesIds = spaces.map((value) => value._id);
+
+ return mongo.Cache.find({space: {$in: spacesIds}}).sort('name').exec();
+ })
+ .then((caches) => {
+ result.caches = caches;
+
+ return mongo.Igfs.find({space: {$in: spacesIds}}).sort('name').exec();
+ })
+ .then((igfss) => {
+ result.igfss = igfss;
+
+ return mongo.Cluster.find({space: {$in: spacesIds}}).sort('name').deepPopulate(mongo.ClusterDefaultPopulate).exec();
+ })
+ .then((clusters) => {
+ result.clusters = clusters;
+
+ res.json(result);
+ })
+ .catch((err) => mongo.handleError(res, err));
});
/**
@@ -96,40 +69,36 @@ module.exports.factory = function(_, express, mongo) {
router.post('/save', (req, res) => {
const params = req.body;
const caches = params.caches;
+ const igfss = params.igfss;
let clusterId = params._id;
if (params._id) {
- mongo.Cluster.update({_id: params._id}, params, {upsert: true}, (errCluster) => {
- if (mongo.processed(errCluster, res)) {
- mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {clusters: clusterId}}, {multi: true}, (errCacheAdd) => {
- if (mongo.processed(errCacheAdd, res)) {
- mongo.Cache.update({_id: {$nin: caches}}, {$pull: {clusters: clusterId}}, {multi: true}, (errCachePull) => {
- if (mongo.processed(errCachePull, res))
- res.send(params._id);
- });
- }
- });
- }
- });
+ mongo.Cluster.update({_id: params._id}, params, {upsert: true}).exec()
+ .then(() => mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {clusters: clusterId}}, {multi: true}).exec())
+ .then(() => mongo.Cache.update({_id: {$nin: caches}}, {$pull: {clusters: clusterId}}, {multi: true}).exec())
+ .then(() => mongo.Igfs.update({_id: {$in: igfss}}, {$addToSet: {clusters: clusterId}}, {multi: true}).exec())
+ .then(() => mongo.Igfs.update({_id: {$nin: igfss}}, {$pull: {clusters: clusterId}}, {multi: true}).exec())
+ .then(() => res.send(clusterId))
+ .catch((err) => mongo.handleError(res, err));
}
else {
- mongo.Cluster.findOne({space: params.space, name: params.name}, (errClusterFound, clusterFound) => {
- if (mongo.processed(errClusterFound, res)) {
- if (clusterFound)
- return res.status(500).send('Cluster with name: "' + clusterFound.name + '" already exist.');
-
- (new mongo.Cluster(params)).save((errCluster, cluster) => {
- if (mongo.processed(errCluster, res)) {
- clusterId = cluster._id;
-
- mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {clusters: clusterId}}, {multi: true}, (errCacheAdd) => {
- if (mongo.processed(errCacheAdd, res))
- res.send(clusterId);
- });
- }
- });
- }
- });
+ mongo.Cluster.findOne({space: params.space, name: params.name}).exec()
+ .then((cluster) => {
+ if (cluster)
+ return res.status(500).send('Cluster with name: "' + cluster.name + '" already exist.');
+
+ return (new mongo.Cluster(params)).save();
+ })
+ .then((cluster) => {
+ clusterId = cluster._id;
+
+ return mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {clusters: clusterId}}, {multi: true}).exec();
+ })
+ .then(() => mongo.Cache.update({_id: {$nin: caches}}, {$pull: {clusters: clusterId}}, {multi: true}).exec())
+ .then(() => mongo.Igfs.update({_id: {$in: igfss}}, {$addToSet: {clusters: clusterId}}, {multi: true}).exec())
+ .then(() => mongo.Igfs.update({_id: {$nin: igfss}}, {$pull: {clusters: clusterId}}, {multi: true}).exec())
+ .then(() => res.send(clusterId))
+ .catch((err) => mongo.handleError(res, err));
}
});
@@ -137,46 +106,35 @@ module.exports.factory = function(_, express, mongo) {
* Remove cluster by ._id.
*/
router.post('/remove', (req, res) => {
- const clusterId = req.body;
+ const params = req.body;
+ const clusterId = params._id;
mongo.Cache.update({clusters: {$in: [clusterId]}}, {$pull: {clusters: clusterId}}, {multi: true}).exec()
.then(() => mongo.Igfs.update({clusters: {$in: [clusterId]}}, {$pull: {clusters: clusterId}}, {multi: true}).exec())
- .then(() => mongo.Cluster.remove(clusterId))
+ .then(() => mongo.Cluster.remove(params))
.then(() => res.sendStatus(200))
- .catch((err) => {
- // TODO IGNITE-843 Send error to admin
- res.status(500).send(err.message);
- });
+ .catch((err) => mongo.handleError(res, err));
});
/**
* Remove all clusters.
*/
router.post('/remove/all', (req, res) => {
- const user_id = req.currentUserId();
+ let spacesIds = [];
// Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (mongo.processed(errSpace, res)) {
- const space_ids = spaces.map((value) => value._id);
-
- mongo.Cluster.remove({space: {$in: space_ids}}, (errCluster) => {
- if (errCluster)
- return res.status(500).send(errCluster.message);
-
- mongo.Cache.update({space: {$in: space_ids}}, {clusters: []}, {multi: true}, (errCache) => {
- if (mongo.processed(errCache, res)) {
- mongo.Igfs.update({space: {$in: space_ids}}, {clusters: []}, {multi: true}, (errIgfs) => {
- if (mongo.processed(errIgfs, res))
- res.sendStatus(200);
- });
- }
- });
- });
- }
- });
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => {
+ spacesIds = spaces.map((value) => value._id);
+
+ return mongo.Cluster.remove({space: {$in: spacesIds}});
+ })
+ .then(() => mongo.Cache.update({space: {$in: spacesIds}}, {clusters: []}, {multi: true}).exec())
+ .then(() => mongo.Igfs.update({space: {$in: spacesIds}}, {clusters: []}, {multi: true}).exec())
+ .then(() => res.sendStatus(200))
+ .catch((err) => mongo.handleError(res, err));
});
- resolve(router);
+ factoryResolve(router);
});
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/domains.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/domains.js b/modules/control-center-web/src/main/js/serve/routes/domains.js
index 368258e..922fff2 100644
--- a/modules/control-center-web/src/main/js/serve/routes/domains.js
+++ b/modules/control-center-web/src/main/js/serve/routes/domains.js
@@ -21,11 +21,11 @@
module.exports = {
implements: 'domains-routes',
- inject: ['require(lodash)', 'require(express)', 'require(async)', 'mongo']
+ inject: ['require(lodash)', 'require(express)', 'mongo']
};
module.exports.factory = function(_, express, async, mongo) {
- return new Promise((resolve) => {
+ return new Promise((factoryResolve) => {
const router = new express.Router();
/**
@@ -35,251 +35,198 @@ module.exports.factory = function(_, express, async, mongo) {
* @param res Response.
*/
router.post('/list', (req, res) => {
- const user_id = req.currentUserId();
-
- // Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (mongo.processed(errSpace, res)) {
- const space_ids = spaces.map((value) => value._id);
-
- // Get all clusters for spaces.
- mongo.Cluster.find({space: {$in: space_ids}}, '_id name').sort('name').exec((errCluster, clusters) => {
- if (mongo.processed(errCluster, res)) {
- // Get all caches for spaces.
- mongo.Cache.find({space: {$in: space_ids}}).sort('name').exec((errCache, caches) => {
- if (mongo.processed(errCache, res)) {
- // Get all domain models for spaces.
- mongo.DomainModel.find({space: {$in: space_ids}}).sort('valueType').exec((errDomainModel, domains) => {
- if (mongo.processed(errDomainModel, res)) {
- _.forEach(caches, (cache) => {
- cache.domains = _.filter(cache.domains, (metaId) => {
- return _.find(domains, {_id: metaId});
- });
- });
-
- // Remove deleted caches.
- _.forEach(domains, (domain) => {
- domain.caches = _.filter(domain.caches, (cacheId) => {
- return _.find(caches, {_id: cacheId});
- });
- });
-
- res.json({
- spaces,
- clusters: clusters.map((cluster) => ({value: cluster._id, label: cluster.name})),
- caches,
- domains
- });
- }
- });
- }
- });
- }
- });
- }
- });
+ const result = {};
+ let spacesIds = [];
+
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => {
+ result.spaces = spaces;
+ spacesIds = spaces.map((value) => value._id);
+
+ return mongo.Cluster.find({space: {$in: spacesIds}}, '_id name').sort('name').exec();
+ })
+ .then((clusters) => {
+ result.clusters = clusters;
+
+ return mongo.Cache.find({space: {$in: spacesIds}}).sort('name').exec();
+ })
+ .then((caches) => {
+ result.caches = caches;
+
+ return mongo.DomainModel.find({space: {$in: spacesIds}}).sort('valueType').exec();
+ })
+ .then((domains) => {
+ result.domains = domains;
+
+ res.json(result);
+ })
+ .catch((err) => mongo.handleError(res, err));
});
- function _saveDomainModel(domain, savedDomains, callback) {
- const caches = domain.caches;
- let domainId = domain._id;
-
- const cacheStoreChanges = domain.cacheStoreChanges;
-
- if (domainId) {
- mongo.DomainModel.update({_id: domain._id}, domain, {upsert: true}, (errDomainModel) => {
- if (errDomainModel)
- callback(errDomainModel);
- else {
- mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: domainId}}, {multi: true}, (errCacheAdd) => {
- if (errCacheAdd)
- callback(errCacheAdd);
- else {
- mongo.Cache.update({_id: {$nin: caches}}, {$pull: {domains: domainId}}, {multi: true}, (errCachePull) => {
- if (errCachePull)
- callback(errCachePull);
- else {
- savedDomains.push(domain);
-
- _updateCacheStore(cacheStoreChanges, callback);
- }
- });
- }
- });
- }
- });
- }
- else {
- mongo.DomainModel.findOne({space: domain.space, valueType: domain.valueType}, (errDomainModelFind, found) => {
- if (errDomainModelFind)
- callback(errDomainModelFind);
- else if (found)
- return callback('Domain model with value type: "' + found.valueType + '" already exist.');
-
- (new mongo.DomainModel(domain)).save((errDomainModel, domainSaved) => {
- if (errDomainModel)
- callback(errDomainModel);
- else {
- domainId = domainSaved._id;
-
- mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: domainId}}, {multi: true}, (errCache) => {
- if (errCache)
- callback(errCache);
- else {
- savedDomains.push(domainSaved);
-
- _updateCacheStore(cacheStoreChanges, callback);
- }
- });
- }
- });
- });
- }
- }
-
- function _updateCacheStore(cacheStoreChanges, callback) {
- if (cacheStoreChanges && cacheStoreChanges.length > 0) {
- async.forEachOf(cacheStoreChanges, (change, idx, cb) => {
- mongo.Cache.update({_id: {$eq: change.cacheId}}, change.change, {}, (err) => {
- if (err)
- cb(err);
- else
- cb();
- });
- }, callback);
- }
- else
- callback();
- }
-
- function _save(domains, res) {
- const savedDomains = [];
- const generatedCaches = [];
-
- if (domains && domains.length > 0) {
- async.forEachOf(domains, (domain, idx, callback) => {
- if (domain.newCache) {
- mongo.Cache.findOne({space: domain.space, name: domain.newCache.name}, (errCacheFind, cacheFound) => {
- if (mongo.processed(errCacheFind, res)) {
- if (cacheFound) {
- // Cache already exists, just save domain model.
- domain.caches = [cacheFound._id];
-
- _saveDomainModel(domain, savedDomains, callback);
- }
- else {
- // If cache not found, then create it and associate with domain model.
- const newCache = domain.newCache;
- newCache.space = domain.space;
-
- (new mongo.Cache(newCache)).save((errCache, cache) => {
- const cacheId = cache._id;
-
- if (mongo.processed(errCache, res)) {
- mongo.Cluster.update({_id: {$in: cache.clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, (errCluster) => {
- if (mongo.processed(errCluster, res)) {
- domain.caches = [cacheId];
- generatedCaches.push(cache);
-
- _saveDomainModel(domain, savedDomains, callback);
- }
- });
- }
- });
- }
- }
- });
- }
- else
- _saveDomainModel(domain, savedDomains, callback);
- }, (err) => {
- if (err)
- res.status(500).send(err.message);
- else
- res.send({savedDomains, generatedCaches});
- });
- }
- else
- res.status(500).send('Nothing to save!');
- }
+ // function _saveDomainModel(domain, savedDomains, callback) {
+ // const caches = domain.caches;
+ // const cacheStoreChanges = domain.cacheStoreChanges;
+ // let domainId = domain._id;
+ //
+ // if (domainId) {
+ // Promise.all([
+ // mongo.DomainModel.update({_id: domain._id}, domain, {upsert: true}).exec(),
+ // mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: domainId}}, {multi: true}).exec(),
+ // mongo.Cache.update({_id: {$nin: caches}}, {$pull: {domains: domainId}}, {multi: true}).exec()
+ // ]).then(() => {
+ // savedDomains.push(domain);
+ //
+ // _updateCacheStore(cacheStoreChanges, callback);
+ // });
+ // }
+ // else {
+ // mongo.DomainModel.findOne({space: domain.space, valueType: domain.valueType}).exec()
+ // .then((found) => {
+ // if (found)
+ // reject(new Error('Domain model with value type: "' + found.valueType + '" already exist.'));
+ //
+ // return (new mongo.DomainModel(domain)).save();
+ // })
+ // .then((domainSaved) => {
+ // savedDomains.push(domainSaved);
+ //
+ // return mongo.Cache.update({_id: {$in: caches}}, {$addToSet: {domains: domainSaved._id}}, {multi: true}).exec();
+ // }).then(() => _updateCacheStore(cacheStoreChanges));
+ // }
+ // }
+
+ // function _updateCacheStore(cacheStoreChanges, callback) {
+ // if (cacheStoreChanges && cacheStoreChanges.length > 0) {
+ // async.forEachOf(cacheStoreChanges, (change, idx, cb) => {
+ // mongo.Cache.update({_id: {$eq: change.cacheId}}, change.change, {}, (err) => {
+ // if (err)
+ // cb(err);
+ // else
+ // cb();
+ // });
+ // }, callback);
+ // }
+ // else
+ // callback();
+ // }
+
+ // function _save(domains, res) {
+ // if (domains && domains.length > 0) {
+ // const savedDomains = [];
+ // const generatedCaches = [];
+ // const promises = [];
+ //
+ // _.forEach(domains, (domain) => {
+ // promises.push();
+ // });
+ //
+ // Promise.all(promises)
+ // .then(() => res.send({savedDomains, generatedCaches}))
+ // .catch((err) => mongo.handleError(res, err));
+ //
+ // //async.forEachOf(domains, (domain, idx, callback) => {
+ // // if (domain.newCache) {
+ // // mongo.Cache.findOne({space: domain.space, name: domain.newCache.name}, (errCacheFind, cacheFound) => {
+ // // if (mongo.processed(errCacheFind, res)) {
+ // // if (cacheFound) {
+ // // // Cache already exists, just save domain model.
+ // // domain.caches = [cacheFound._id];
+ // //
+ // // _saveDomainModel(domain, savedDomains, callback);
+ // // }
+ // // else {
+ // // // If cache not found, then create it and associate with domain model.
+ // // const newCache = domain.newCache;
+ // // newCache.space = domain.space;
+ // //
+ // // (new mongo.Cache(newCache)).save((errCache, cache) => {
+ // // const cacheId = cache._id;
+ // //
+ // // if (mongo.processed(errCache, res)) {
+ // // mongo.Cluster.update({_id: {$in: cache.clusters}}, {$addToSet: {caches: cacheId}}, {multi: true}, (errCluster) => {
+ // // if (mongo.processed(errCluster, res)) {
+ // // domain.caches = [cacheId];
+ // // generatedCaches.push(cache);
+ // //
+ // // _saveDomainModel(domain, savedDomains, callback);
+ // // }
+ // // });
+ // // }
+ // // });
+ // // }
+ // // }
+ // // });
+ // // }
+ // // else
+ // // _saveDomainModel(domain, savedDomains, callback);
+ // //}
+ // }
+ // else
+ // res.status(500).send('Nothing to save!');
+ // }
/**
* Save domain model.
*/
router.post('/save', (req, res) => {
- _save([req.body], res);
+ res.status(500).send('Not ready!');
+ // _save([req.body], res);
});
/**
* Batch save domain models.
*/
router.post('/save/batch', (req, res) => {
- _save(req.body, res);
+ res.status(500).send('Not ready!');
+ // _save(req.body, res);
});
/**
* Remove domain model by ._id.
*/
router.post('/remove', (req, res) => {
- mongo.DomainModel.remove(req.body, (err) => {
- if (mongo.processed(err, res))
- res.sendStatus(200);
- });
+ mongo.DomainModel.remove(req.body)
+ .then(() => res.sendStatus(200))
+ .catch((err) => mongo.handleError(res, err));
});
/**
* Remove all domain models.
*/
router.post('/remove/all', (req, res) => {
- const user_id = req.currentUserId();
+ let spacesIds = [];
- // Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (mongo.processed(errSpace, res)) {
- const space_ids = spaces.map((value) => value._id);
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => {
+ spacesIds = spaces.map((value) => value._id);
- mongo.DomainModel.remove({space: {$in: space_ids}}, (errDomainModel) => {
- if (errDomainModel)
- return res.status(500).send(errDomainModel.message);
-
- mongo.Cache.update({space: {$in: space_ids}}, {domains: []}, {multi: true}, (errCache) => {
- if (mongo.processed(errCache, res))
- res.sendStatus(200);
- });
- });
- }
- });
+ return mongo.Cache.update({space: {$in: spacesIds}}, {domains: []}, {multi: true}).exec();
+ })
+ .then(() => mongo.DomainModel.remove({space: {$in: spacesIds}}).exec())
+ .then(() => res.sendStatus(200))
+ .catch((err) => mongo.handleError(res, err));
});
/**
* Remove all generated demo domain models and caches.
*/
router.post('/remove/demo', (req, res) => {
- const user_id = req.currentUserId();
-
- // Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (mongo.processed(errSpace, res)) {
- const space_ids = spaces.map((value) => value._id);
+ let spacesIds = [];
- // Remove all demo domain models.
- mongo.DomainModel.remove({$and: [{space: {$in: space_ids}}, {demo: true}]}, (errDomainModel) => {
- if (errDomainModel)
- return res.status(500).send(errDomainModel.message);
+ // TODO IGNITE-843 also remove from links: Cache -> DomainModel ; DomainModel -> Cache; Cluster -> Cache.
- // Remove all demo caches.
- mongo.Cache.remove({$and: [{space: {$in: space_ids}}, {demo: true}]}, (errCache) => {
- if (errCache)
- return res.status(500).send(errCache.message);
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => {
+ spacesIds = spaces.map((value) => value._id);
- res.sendStatus(200);
- });
- });
- }
- });
+ return mongo.DomainModel.remove({$and: [{space: {$in: spacesIds}}, {demo: true}]});
+ })
+ .then(() => mongo.Cache.remove({$and: [{space: {$in: spacesIds}}, {demo: true}]}))
+ .then(() => res.sendStatus(200))
+ .catch((err) => mongo.handleError(res, err));
});
- resolve(router);
+ factoryResolve(router);
});
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/igfs.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/igfs.js b/modules/control-center-web/src/main/js/serve/routes/igfs.js
index 7508f9a..1df089e 100644
--- a/modules/control-center-web/src/main/js/serve/routes/igfs.js
+++ b/modules/control-center-web/src/main/js/serve/routes/igfs.js
@@ -25,7 +25,7 @@ module.exports = {
};
module.exports.factory = function(_, express, mongo) {
- return new Promise((resolve) => {
+ return new Promise((factoryResolve) => {
const router = new express.Router();
/**
@@ -36,31 +36,27 @@ module.exports.factory = function(_, express, mongo) {
*/
router.post('/list', (req, res) => {
const result = {};
+ let spacesIds = [];
// Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: req.currentUserId()}, {usedBy: {$elemMatch: {account: req.currentUserId()}}}]}).exec()
+ mongo.spaces(req.currentUserId())
.then((spaces) => {
result.spaces = spaces;
- result.spacesIds = spaces.map((value) => value._id);
+ spacesIds = spaces.map((value) => value._id);
- return mongo.Cluster.find({space: {$in: result.spacesIds}}, '_id name').sort('name').exec();
+ return mongo.Cluster.find({space: {$in: spacesIds}}, '_id name').sort('name').exec();
})
.then((clusters) => {
result.clusters = clusters;
- return mongo.Igfs.find({space: {$in: result.spacesIds}}).sort('name').exec();
+ return mongo.Igfs.find({space: {$in: spacesIds}}).sort('name').exec();
})
.then((igfss) => {
- res.json({
- spaces: result.spaces,
- clusters: result.clusters.map((cluster) => ({value: cluster._id, label: cluster.name})),
- igfss
- });
+ result.igfss = igfss;
+
+ res.json(result);
})
- .catch((err) => {
- // TODO IGNITE-843 Send error to admin
- res.status(500).send(err.message);
- });
+ .catch((err) => mongo.handleError(res, err));
});
/**
@@ -69,7 +65,6 @@ module.exports.factory = function(_, express, mongo) {
router.post('/save', (req, res) => {
const params = req.body;
const clusters = params.clusters;
-
let igfsId = params._id;
if (params._id) {
@@ -77,10 +72,7 @@ module.exports.factory = function(_, express, mongo) {
.then(() => mongo.Cluster.update({_id: {$in: clusters}}, {$addToSet: {igfss: igfsId}}, {multi: true}).exec())
.then(() => mongo.Cluster.update({_id: {$nin: clusters}}, {$pull: {igfss: igfsId}}, {multi: true}).exec())
.then(() => res.send(igfsId))
- .catch((err) => {
- // TODO IGNITE-843 Send error to admin
- res.status(500).send(err.message);
- });
+ .catch((err) => mongo.handleError(res, err));
}
else {
mongo.Igfs.findOne({space: params.space, name: params.name}).exec()
@@ -96,10 +88,7 @@ module.exports.factory = function(_, express, mongo) {
return mongo.Cluster.update({_id: {$in: clusters}}, {$addToSet: {igfss: igfsId}}, {multi: true});
})
.then(() => res.send(igfsId))
- .catch((err) => {
- // TODO IGNITE-843 Send error to admin
- res.status(500).send(err.message);
- });
+ .catch((err) => mongo.handleError(res, err));
}
});
@@ -107,26 +96,23 @@ module.exports.factory = function(_, express, mongo) {
* Remove IGFS by ._id.
*/
router.post('/remove', (req, res) => {
- const igfsId = req.body;
+ const params = req.body;
+ const igfsId = params._id;
mongo.Cluster.update({igfss: {$in: [igfsId]}}, {$pull: {igfss: igfsId}}, {multi: true}).exec()
- .then(mongo.Igfs.remove(igfsId))
+ .then(mongo.Igfs.remove(params))
.then(() => res.sendStatus(200))
- .catch((err) => {
- // TODO IGNITE-843 Send error to admin
- res.status(500).send(err.message);
- });
+ .catch((err) => mongo.handleError(res, err));
});
/**
* Remove all IGFSs.
*/
router.post('/remove/all', (req, res) => {
- const userId = req.currentUserId();
let spacesIds = [];
// Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: userId}, {usedBy: {$elemMatch: {account: userId}}}]})
+ mongo.spaces(req.currentUserId())
.then((spaces) => {
spacesIds = spaces.map((value) => value._id);
@@ -134,13 +120,10 @@ module.exports.factory = function(_, express, mongo) {
})
.then(() => mongo.Cluster.update({space: {$in: spacesIds}}, {igfss: []}, {multi: true}))
.then(() => res.sendStatus(200))
- .catch((err) => {
- // TODO IGNITE-843 Send error to admin
- res.status(500).send(err.message);
- });
+ .catch((err) => mongo.handleError(res, err));
});
- resolve(router);
+ factoryResolve(router);
});
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/notebooks.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/notebooks.js b/modules/control-center-web/src/main/js/serve/routes/notebooks.js
index e65f77d..5070bcc 100644
--- a/modules/control-center-web/src/main/js/serve/routes/notebooks.js
+++ b/modules/control-center-web/src/main/js/serve/routes/notebooks.js
@@ -25,7 +25,7 @@ module.exports = {
};
module.exports.factory = function(express, mongo) {
- return new Promise((resolve) => {
+ return new Promise((factoryResolve) => {
const router = new express.Router();
/**
@@ -35,23 +35,11 @@ module.exports.factory = function(express, mongo) {
* @param res Response.
*/
router.post('/list', (req, res) => {
- const user_id = req.currentUserId();
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => mongo.Notebook.find({space: {$in: spaces.map((value) => value._id)}}).select('_id name').sort('name').exec())
+ .then((notebooks) => res.json(notebooks))
+ .catch((err) => mongo.handleError(res, err));
- // Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (errSpace)
- return res.status(500).send(errSpace.message);
-
- const space_ids = spaces.map((value) => value._id);
-
- // Get all metadata for spaces.
- mongo.Notebook.find({space: {$in: space_ids}}).select('_id name').sort('name').exec((errNotebook, notebooks) => {
- if (errNotebook)
- return res.status(500).send(errNotebook.message);
-
- res.json(notebooks);
- });
- });
});
/**
@@ -61,23 +49,10 @@ module.exports.factory = function(express, mongo) {
* @param res Response.
*/
router.post('/get', (req, res) => {
- const user_id = req.currentUserId();
-
- // Get owned space and all accessed space.
- mongo.Space.find({$or: [{owner: user_id}, {usedBy: {$elemMatch: {account: user_id}}}]}, (errSpace, spaces) => {
- if (errSpace)
- return res.status(500).send(errSpace.message);
-
- const space_ids = spaces.map((value) => value._id);
-
- // Get all metadata for spaces.
- mongo.Notebook.findOne({space: {$in: space_ids}, _id: req.body.noteId}).exec((errNotebook, notebook) => {
- if (errNotebook)
- return res.status(500).send(errNotebook.message);
-
- res.json(notebook);
- });
- });
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => mongo.Notebook.findOne({space: {$in: spaces.map((value) => value._id)}, _id: req.body.noteId}).exec())
+ .then((notebook) => res.json(notebook))
+ .catch((err) => mongo.handleError(res, err));
});
/**
@@ -91,28 +66,20 @@ module.exports.factory = function(express, mongo) {
const noteId = note._id;
if (noteId) {
- mongo.Notebook.update({_id: noteId}, note, {upsert: true}, (err) => {
- if (err)
- return res.status(500).send(err.message);
-
- res.send(noteId);
- });
+ mongo.Notebook.update({_id: noteId}, note, {upsert: true}).exec()
+ .then(() => res.send(noteId))
+ .catch((err) => mongo.handleError(res, err));
}
else {
- mongo.Notebook.findOne({space: note.space, name: note.name}, (errNotebookFind, notebookFoud) => {
- if (errNotebookFind)
- return res.status(500).send(errNotebookFind.message);
-
- if (notebookFoud)
- return res.status(500).send('Notebook with name: "' + notebookFoud.name + '" already exist.');
-
- (new mongo.Notebook(req.body)).save((errNotebook, noteNew) => {
- if (errNotebook)
- return res.status(500).send(errNotebook.message);
-
- res.send(noteNew._id);
- });
- });
+ mongo.Notebook.findOne({space: note.space, name: note.name}).exec()
+ .then((notebook) => {
+ if (notebook)
+ throw new Error('Notebook with name: "' + notebook.name + '" already exist.');
+
+ return (new mongo.Notebook(req.body)).save();
+ })
+ .then((notebook) => res.send(notebook._id))
+ .catch((err) => mongo.handleError(res, err));
}
});
@@ -123,12 +90,9 @@ module.exports.factory = function(express, mongo) {
* @param res Response.
*/
router.post('/remove', (req, res) => {
- mongo.Notebook.remove(req.body, (err) => {
- if (err)
- return res.status(500).send(err.message);
-
- res.sendStatus(200);
- });
+ mongo.Notebook.remove(req.body)
+ .then(() => res.sendStatus(200))
+ .catch((err) => mongo.handleError(res, err));
});
/**
@@ -138,22 +102,12 @@ module.exports.factory = function(express, mongo) {
* @param res Response.
*/
router.post('/new', (req, res) => {
- const user_id = req.currentUserId();
-
- // Get owned space and all accessed space.
- mongo.Space.findOne({owner: user_id}, (errSpace, space) => {
- if (errSpace)
- return res.status(500).send(errSpace.message);
-
- (new mongo.Notebook({space: space.id, name: req.body.name})).save((errNotebook, note) => {
- if (errNotebook)
- return res.status(500).send(errNotebook.message);
-
- return res.send(note._id);
- });
- });
+ mongo.spaces(req.currentUserId())
+ .then((spaces) => (new mongo.Notebook({space: spaces[0].id, name: req.body.name})).save())
+ .then((notebook) => res.send(notebook._id))
+ .catch((err) => mongo.handleError(res, err));
});
- resolve(router);
+ factoryResolve(router);
});
};
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/profile.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/profile.js b/modules/control-center-web/src/main/js/serve/routes/profile.js
index d611df4..6b166fd 100644
--- a/modules/control-center-web/src/main/js/serve/routes/profile.js
+++ b/modules/control-center-web/src/main/js/serve/routes/profile.js
@@ -31,7 +31,7 @@ module.exports.factory = function(_, express, mongo) {
/**
* Save user profile.
*/
- router.post('/save', function(req, res) {
+ router.post('/save', (req, res) => {
const params = req.body;
if (params.password && _.isEmpty(params.password))
@@ -79,10 +79,7 @@ module.exports.factory = function(_, express, mongo) {
return user.save();
})
.then(() => res.sendStatus(200))
- .catch((err) => {
- // TODO IGNITE-843 Send error to admin
- res.status(500).send(err.message);
- });
+ .catch((err) => mongo.handleError(res, err));
});
resolveFactory(router);
http://git-wip-us.apache.org/repos/asf/ignite/blob/389c6625/modules/control-center-web/src/main/js/serve/routes/public.js
----------------------------------------------------------------------
diff --git a/modules/control-center-web/src/main/js/serve/routes/public.js b/modules/control-center-web/src/main/js/serve/routes/public.js
index 829e9d6..b83208d 100644
--- a/modules/control-center-web/src/main/js/serve/routes/public.js
+++ b/modules/control-center-web/src/main/js/serve/routes/public.js
@@ -25,7 +25,7 @@ module.exports = {
};
module.exports.factory = function(express, passport, nodemailer, settings, mongo) {
- return new Promise(function(factoryResolve) {
+ return new Promise((factoryResolve) => {
const router = new express.Router();
const _randomString = () => {
@@ -77,7 +77,7 @@ module.exports.factory = function(express, passport, nodemailer, settings, mongo
};
// GET user.
- router.post('/user', function(req, res) {
+ router.post('/user', (req, res) => {
const becomeUsed = req.session.viewedUser && req.user.admin;
let user = req.user;
@@ -94,7 +94,7 @@ module.exports.factory = function(express, passport, nodemailer, settings, mongo
/**
* Register new account.
*/
- router.post('/signup', function(req, res) {
+ router.post('/signup', (req, res) => {
mongo.Account.count().exec()
.then((cnt) => {
req.body.admin = cnt === 0;
@@ -155,15 +155,15 @@ module.exports.factory = function(express, passport, nodemailer, settings, mongo
/**
* Login in exist account.
*/
- router.post('/signin', function(req, res, next) {
- passport.authenticate('local', function(errAuth, user) {
+ router.post('/signin', (req, res, next) => {
+ passport.authenticate('local', (errAuth, user) => {
if (errAuth)
return res.status(401).send(errAuth.message);
if (!user)
return res.status(401).send('Invalid email or password');
- req.logIn(user, {}, function(errLogIn) {
+ req.logIn(user, {}, (errLogIn) => {
if (errLogIn)
return res.status(401).send(errLogIn.message);
@@ -175,7 +175,7 @@ module.exports.factory = function(express, passport, nodemailer, settings, mongo
/**
* Logout.
*/
- router.post('/logout', function(req, res) {
+ router.post('/logout', (req, res) => {
req.logout();
res.sendStatus(200);
@@ -184,7 +184,7 @@ module.exports.factory = function(express, passport, nodemailer, settings, mongo
/**
* Send e-mail to user with reset token.
*/
- router.post('/password/forgot', function(req, res) {
+ router.post('/password/forgot', (req, res) => {
mongo.Account.findOne({email: req.body.email}).exec()
.then((user) => {
if (!user)
@@ -212,7 +212,7 @@ module.exports.factory = function(express, passport, nodemailer, settings, mongo
/**
* Change password with given token.
*/
- router.post('/password/reset', function(req, res) {
+ router.post('/password/reset', (req, res) => {
mongo.Account.findOne({resetPasswordToken: req.body.token}).exec()
.then((user) => {
return new Promise((resolve, reject) => {
@@ -243,7 +243,7 @@ module.exports.factory = function(express, passport, nodemailer, settings, mongo
});
/* GET reset password page. */
- router.post('/password/validate/token', function(req, res) {
+ router.post('/password/validate/token', (req, res) => {
const token = req.body.token;
mongo.Account.findOne({resetPasswordToken: token}).exec()