Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Algumas refatorações #1

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
INSTRUÇÕES
==========

* Clonar o repositório
* cd pasta-do-projeto
* sudo npm install (aguardar a instalação)
* rodar no terminal node app.js
* Clonar o repositório: `git clone git@github.com:vedovelli/screencast-restful`
* `cd pasta-do-projeto`
* `sudo npm install` (aguardar a instalação)
* rodar no terminal `node app.js`
* o webservice estará a disposição em http://127.0.0.1:5000/users

Verificar o screencast em:

* YouTube https://www.youtube.com/watch?v=jvNDM5e7TFo
* Vimeo https://vimeo.com/101055091
* Download https://dl.dropboxusercontent.com/u/483575/vedovelli_restful_webservices_nodejs_mongodb.mp4.zip
* YouTube: https://www.youtube.com/watch?v=jvNDM5e7TFo
* Vimeo: https://vimeo.com/101055091
* Download: https://dl.dropboxusercontent.com/u/483575/vedovelli_restful_webservices_nodejs_mongodb.mp4.zip
66 changes: 25 additions & 41 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,64 +1,48 @@
var app = require('./app_config.js');
var app = require('./app_config.js'),
userController = require('./controller/userController.js'),
validator = require('validator');

var userController = require('./controller/userController.js');
function valid(attribute) {
return validator.trim(validator.escape(req.param(attribute)));
}

var validator = require('validator');
function responseJSON(resp) {
res.json(resp);
}

app.get('/', function(req, res) {

res.end('Servidor ON!');
res.end('Servidor ON!');
});

app.get('/users', function(req, res) {

userController.list(function(resp) {

res.json(resp);
});
userController.list(responseJSON(resp));
});

app.get('/users/:id', function(req, res) {
var id = valid('id');

var id = validator.trim(validator.escape(req.param('id')));

userController.user(id, function(resp) {

res.json(resp);
});
userController.user(id, responseJSON(resp));
});

app.post('/users', function(req, res) {
var fullname = valid('fullname'),
email = valid('email'),
password = valid('password');

var fullname = validator.trim(validator.escape(req.param('fullname')));
var email = validator.trim(validator.escape(req.param('email')));
var password = validator.trim(validator.escape(req.param('password')));

userController.save(fullname, email, password, function(resp) {

res.json(resp);
});
userController.save(fullname, email, password, responseJSON(resp));
});

app.put('/users', function(req, res) {
var id = valid('id'),
fullname = valid('fullname'),
email = valid('email'),
password = valid('password');

var id = validator.trim(validator.escape(req.param('id')));
var fullname = validator.trim(validator.escape(req.param('fullname')));
var email = validator.trim(validator.escape(req.param('email')));
var password = validator.trim(validator.escape(req.param('password')));

userController.update(id, fullname, email, password, function(resp) {

res.json(resp);
});
userController.update(id, fullname, email, password, responseJSON(resp));
});

app.delete('/users/:id', function(req, res) {
var id = valid('id');

var id = validator.trim(validator.escape(req.param('id')));

userController.delete(id, function(resp) {

res.json(resp);
});

});
userController.delete(id, responseJSON(resp));
});
30 changes: 12 additions & 18 deletions app_config.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
var express = require('express');

var app = module.exports = express();

var bodyParser = require('body-parser');

var allowCors = function(req, res, next) {

res.header('Access-Control-Allow-Origin', '127.0.0.1:5000');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header('Access-Control-Allow-Credentials', 'true');

next();
}
var express = require('express'),
bodyParser = require('body-parser'),
app = module.exports = express(),
allowCors = function(req, res, next) {
res.header('Access-Control-Allow-Origin', '127.0.0.1:5000');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
res.header('Access-Control-Allow-Credentials', 'true');
next();
};

app.listen(5000);

Expand All @@ -21,6 +16,5 @@ app.use(allowCors);
app.use(bodyParser.json());

app.use(bodyParser.urlencoded({

extended: true
}));
extended: true
}));
130 changes: 40 additions & 90 deletions controller/userController.js
Original file line number Diff line number Diff line change
@@ -1,105 +1,55 @@
var db = require('../db_config.js');

exports.list = function(callback){

db.User.find({}, function(error, users) {

if(error) {
function returnUser(error, user, string) {
if (error) {
callback({ error: string })
} else {
callback(user);
}
}

function assignment(attribute) {
if (attribute) {
user.attribute = attribute;
}
}

callback({error: 'Não foi possivel retornar os usuarios'});
} else {

callback(users);
}
});
exports.list = function(callback){
db.User.find({}, returnUser(error, users, 'Não foi possivel retornar os usuarios'));
};


exports.user = function(id, callback) {

db.User.findById(id, function(error, user) {

if(error) {

callback({error: 'Não foi possivel retornar o usuario'});
} else {

callback(user);
}
});
db.User.findById(id, returnUser(error, user, 'Não foi possivel retornar o usuario'));
};


exports.save = function(fullname, email, password, callback){

new db.User({

'fullname': fullname,
'email': email,
'password': password,
'created_at': new Date()
}).save(function(error, user) {

if(error) {

callback({error: 'Não foi possivel salvar o usuario'});
} else {

callback(user);
}
});
new db.User({
'fullname': fullname,
'email': email,
'password': password,
'created_at': new Date()
}).save(returnUser(error, user, 'Não foi possivel salvar o usuario'));
};


exports.update = function(id, fullname, email, password, callback) {

db.User.findById(id, function(error, user) {

if(fullname) {

user.fullname = fullname;
}

if(email) {

user.email = email;
}

if(password) {

user.password = password;
}

user.save(function(error, user) {

if(error) {

callback({error: 'Não foi possivel salvar o usuario'});
} else {

callback(user);
}
});
});
db.User.findById(id, function(error, user) {
assignment(fullname);
assignment(email);
assignment(password);
user.save(returnUser(error, user, 'Não foi possivel salvar o usuario'));
});
};


exports.delete = function(id, callback) {

db.User.findById(id, function(error, user) {

if(error) {

callback({error: 'Não foi possivel retornar o usuario'});
} else {

user.remove(function(error) {

if(!error) {

callback({response: 'Usuário excluido com sucesso'});
}
});
}
});
};
db.User.findById(id, function(error, user) {
if (error) {
callback({ error: 'Não foi possivel retornar o usuario' });
} else {
user.remove(function(error) {
if (!error) {
callback({ response: 'Usuário excluido com sucesso' });
}
});
}
});
};
26 changes: 11 additions & 15 deletions db_config.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
var db_string= 'mongodb://127.0.0.1/screencast_restful';

var mongoose = require('mongoose').connect(db_string);

var db = mongoose.connection;
var db_string= 'mongodb://127.0.0.1/screencast_restful',
mongoose = require('mongoose').connect(db_string),
db = mongoose.connection;

db.on('error', console.error.bind(console, 'Erro ao conectar no banco'));

db.once('open', function() {
var userSchema = mongoose.Schema({
fullname: String,
email: String,
password: String,
created_at: Date
});

var userSchema = mongoose.Schema({

fullname: String,
email: String,
password: String,
created_at: Date
});

exports.User = mongoose.model('User', userSchema);
});
exports.User = mongoose.model('User', userSchema);
});