Skip to content

Commit

Permalink
ParamUser table create, get, delete, setValue, getValue working with …
Browse files Browse the repository at this point in the history
…tests
  • Loading branch information
Pierre-Gilles committed May 23, 2016
1 parent e843975 commit 9f6e149
Show file tree
Hide file tree
Showing 26 changed files with 432 additions and 5 deletions.
41 changes: 41 additions & 0 deletions api/controllers/ParamUserController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@

module.exports = {

index: function(req, res, next){
gladys.paramUser.get(req.session.User)
.then(function(paramUsers){
return res.json(paramUsers);
})
.catch(next);
},

create: function(req, res, next){
req.body.user = req.session.User.id;
gladys.paramUser.setValue(req.body)
.then(function(paramUser){
return res.status(201).json(paramUser);
})
.catch(next);
},

update: function(req, res, next){
req.body.user = req.session.User.id;
req.body.name = req.params.name;
gladys.paramUser.setValue(req.body)
.then(function(paramUser){
return res.json(paramUser);
})
.catch(next);
},

delete: function(req, res, next){
req.body.user = req.session.User.id;
req.body.name = req.params.name;
gladys.paramUser.delete(req.body)
.then(function(){
return res.json({success: true});
})
.catch(next);
}

};
1 change: 1 addition & 0 deletions api/core/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ gladys.load = function load() {
gladys.notificationType = require('./notificationtype/index.js');
gladys.notificationUser = require('./notificationuser/index.js');
gladys.param = require('./param/index.js');
gladys.paramUser = require('./paramuser/index.js');
gladys.room = require('./room/index.js');
gladys.sentence = require('./sentence/index.js');
gladys.scenario = require('./scenario/index.js');
Expand Down
5 changes: 5 additions & 0 deletions api/core/paramuser/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports.clearCache = require('./paramUser.clearCache.js');
module.exports.delete = require('./paramUser.delete.js');
module.exports.getValue = require('./paramUser.getValue.js');
module.exports.get = require('./paramUser.get.js');
module.exports.setValue = require('./paramUser.setValue.js');
6 changes: 6 additions & 0 deletions api/core/paramuser/paramUser.clearCache.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
var shared = require('./paramUser.shared.js');

module.exports = function(){
shared.cache = {};
return Promise.resolve();
};
15 changes: 15 additions & 0 deletions api/core/paramuser/paramUser.delete.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
var queries = require('./paramUser.queries.js');
var shared = require('./paramUser.shared.js');

module.exports = function(paramUser){

// delete in database
return gladys.utils.sql(queries.delete, [paramUser.name, paramUser.user])
.then(function(){

// then delete in cache
if(shared.cache[paramUser.user] && shared.cache[paramUser.user][paramUser.name]){
delete shared.cache[paramUser.user][paramUser.name];
}
});
};
5 changes: 5 additions & 0 deletions api/core/paramuser/paramUser.get.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
var queries = require('./paramUser.queries.js');

module.exports = function(user){
return gladys.utils.sql(queries.get, [user.id]);
};
24 changes: 24 additions & 0 deletions api/core/paramuser/paramUser.getValue.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
var queries = require('./paramUser.queries.js');
var shared = require('./paramUser.shared.js');
var setCacheValue = require('./paramUser.setCacheValue.js');
var Promise = require('bluebird');


module.exports = function(name, userId){

// get from cache
if(shared.cache[userId] && shared.cache[userId][name]){
return shared.cache[userId][name];
}

// if not in cache, get in DB
return gladys.utils.sql(queries.getValue, [name, userId])
.then(function(rows){
if(rows.length){
setCacheValue(name, userId, rows[0].value);
return rows[0].value;
} else {
return Promise.reject(new Error('NotFound'));
}
});
};
6 changes: 6 additions & 0 deletions api/core/paramuser/paramUser.queries.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@

module.exports = {
getValue: 'SELECT * FROM paramuser WHERE name = ? AND user = ?;',
deleteValue: 'DELETE FROM paramuser WHERE name = ? AND user = ?;',
get: 'SELECT * FROM paramuser WHERE user = ?;'
};
10 changes: 10 additions & 0 deletions api/core/paramuser/paramUser.setCacheValue.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
var shared = require('./paramUser.shared.js');

module.exports = function(name, userId, value){
if(!shared.cache.hasOwnProperty(userId)){
shared.cache[userId] = {};
shared.cache[userId][name] = value;
} else {
shared.cache[userId][name] = value;
}
};
31 changes: 31 additions & 0 deletions api/core/paramuser/paramUser.setValue.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
var queries = require('./paramUser.queries.js');
var shared = require('./paramUser.shared.js');
var setCacheValue = require('./paramUser.setCacheValue.js');
var Promise = require('bluebird');

module.exports = function(paramUser){

// we test if the param already exist
return gladys.utils.sql(queries.getValue, [paramUser.name, paramUser.user])
.then(function(rows){

// if value exist, we update it
if(rows.length){

return ParamUser.update({id: rows[0].id}, paramUser)
.then(function(paramUsers){
return paramUsers[0];
});
} else {

// if the value does not exist, we create it
return ParamUser.create(paramUser);
}
})
.then(function(paramUser){

// we set the value of the cache
setCacheValue(paramUser.name, paramUser.user, paramUser.value);
return paramUser;
});
};
4 changes: 4 additions & 0 deletions api/core/paramuser/paramUser.shared.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@

module.exports = {
cache: {}
};
4 changes: 0 additions & 4 deletions api/models/Param.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,6 @@ module.exports = {
value: {
type:'string',
required: true
},

user: {
model: 'User'
}

}
Expand Down
31 changes: 31 additions & 0 deletions api/models/ParamUser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/**
* Gladys Project
* http://gladysproject.com
* Software under licence Creative Commons 3.0 France
* http://creativecommons.org/licenses/by-nc-sa/3.0/fr/
* You may not use this software for commercial purposes.
* @author :: Pierre-Gilles Leymarie
*/


module.exports = {

attributes: {

name: {
type:'string',
required: true
},

value: {
type:'string',
required: true
},

user: {
model: 'User',
required: true
}

}
};
1 change: 1 addition & 0 deletions config/policies.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ module.exports.policies = {
NotificationType : ['checkToken'],
NotificationUser : ['checkToken'],
Param : ['checkToken'],
ParamUser : ['checkToken'],
Parametre : ['checkToken'],
PhenixElectricDevice : ['checkToken'],
ProfilePicture : ['checkToken'],
Expand Down
6 changes: 6 additions & 0 deletions config/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,12 @@ module.exports.routes = {
'patch /param/:name': 'ParamController.update',
'delete /param/:name': 'ParamController.delete',

// ParamUser
'get /paramuser': 'ParamUserController.index',
'post /paramuser': 'ParamUserController.create',
'patch /paramuser/:name': 'ParamUserController.update',
'delete /paramuser/:name': 'ParamUserController.delete',

// Script
'get /script': 'ScriptController.index',
'post /script': 'ScriptController.create',
Expand Down
6 changes: 5 additions & 1 deletion test/bootstrap.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ beforeEach(function(done){
if(err) return done(err);

gladys.param.clearCache()
.then(function(){
return gladys.paramUser.clearCache();
})
.then(done)
.catch(done);
});
Expand Down Expand Up @@ -102,7 +105,8 @@ function loadFixtures(barrels){
'box',
'module',
'sentence',
'param'
'param',
'paramuser'
];

return Promise.mapSeries(order, function(tableName){
Expand Down
8 changes: 8 additions & 0 deletions test/fixtures/paramuser.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[
{
"id": 1,
"name": "test",
"value": "test",
"user": 1
}
]
31 changes: 31 additions & 0 deletions test/unit/api/controllers/ParamUser/paramuser.create.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
var request = require('supertest');
var validateParamUser = require('../../validator/paramUserValidator.js');

describe('ParamUser', function() {

describe('create', function() {

it('should create a paramUser', function (done) {

var param = {
name:'THIS_IS_A_TEST',
value: 'value'
};

request(sails.hooks.http.app)
.post('/paramuser?token=test')
.send(param)
.expect(201)
.end(function(err, res) {
if(err) return done(err);

validateParamUser(res.body);
done();
});

});

});


});
25 changes: 25 additions & 0 deletions test/unit/api/controllers/ParamUser/paramuser.delete.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
var request = require('supertest');
var validateParamUser = require('../../validator/paramUserValidator.js');

describe('ParamUser', function() {

describe('delete', function() {

it('should delete a paramUser', function (done) {

request(sails.hooks.http.app)
.delete('/param/test?token=test')
.expect(200)
.end(function(err, res) {
if(err) return done(err);


done();
});

});

});


});
26 changes: 26 additions & 0 deletions test/unit/api/controllers/ParamUser/paramuser.get.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
var request = require('supertest');
var validateParamUser = require('../../validator/paramUserValidator.js');

describe('ParamUser', function() {

describe('get', function() {

it('should get all paramUsers', function (done) {

request(sails.hooks.http.app)
.get('/paramuser?token=test')
.expect(200)
.end(function(err, res) {
if(err) return done(err);

res.body.should.be.instanceOf(Array);
validateParamUser(res.body);
done();
});

});

});


});
31 changes: 31 additions & 0 deletions test/unit/api/controllers/ParamUser/paramuser.update.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
var request = require('supertest');
var validateParamUser = require('../../validator/paramUserValidator.js');

describe('ParamUser', function() {

describe('update', function() {

it('should update a param', function (done) {

var param = {
value: 'value'
};

request(sails.hooks.http.app)
.patch('/paramuser/test?token=test')
.send(param)
.expect(200)
.end(function(err, res) {
if(err) return done(err);

validateParamUser(res.body);
res.body.value.should.equal(param.value);
done();
});

});

});


});
Loading

0 comments on commit 9f6e149

Please sign in to comment.