From 46ad34093de6613ab1447f0208eac7ca21cbdad7 Mon Sep 17 00:00:00 2001 From: Nicolas Fley <nicolas.fley@student.ecp.fr> Date: Wed, 7 Jun 2017 13:09:34 +0200 Subject: [PATCH] user joinded --- models/item.create.js | 44 +++++++++++++++++++++++++++++++++++++++++++ models/item.model.js | 5 +++-- models/user.create.js | 34 +++++++++++++++++++++++++++++++++ models/user.model.js | 23 ++++++++++++++++++++-- routes/item.route.js | 27 +++++++++++++++++++++++--- 5 files changed, 126 insertions(+), 7 deletions(-) create mode 100644 models/item.create.js create mode 100644 models/user.create.js diff --git a/models/item.create.js b/models/item.create.js new file mode 100644 index 0000000..ca622c2 --- /dev/null +++ b/models/item.create.js @@ -0,0 +1,44 @@ +var Sequelize = require('sequelize'); +var sequelize = require('./sequelize'); +var Users = require('./user.create'); + +sequelize + .authenticate() + .then(() => { + console.log('Connection has been established successfully.'); + }) + .catch(err => { + console.error('Unable to connect to the database:', err); + }); + +var Items = sequelize.define('Items', { + description: Sequelize.STRING, + price: Sequelize.FLOAT, + typeItem: Sequelize.INTEGER, // typeDemande + userId: Sequelize.INTEGER, + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true + } +}, { + tableItem: 'Items', +}); + +sequelize.sync({force:true}).then(() => { + Items.create({ + description: 'Slip semi-propre', + price: 4, + userId: 1, + typeItem: 2 + }) + + Items.create({ + description: 'Bon shit sa mère', + price: 10, + userId: 2, + typeItem: 1 + }) +}) + +Items.belongsTo(Users) diff --git a/models/item.model.js b/models/item.model.js index 309125b..d0b6469 100644 --- a/models/item.model.js +++ b/models/item.model.js @@ -1,5 +1,6 @@ var Sequelize = require('sequelize'); var sequelize = require('./sequelize'); +var Users = require('./user.model'); sequelize .authenticate() @@ -19,7 +20,7 @@ var Items = sequelize.define('Items', { tableItem: 'Items', }); -sequelize.sync({force:true}).then(() => { +sequelize.sync().then(() => { Items.create({ description: 'Slip semi-propre', price: 4, @@ -51,7 +52,7 @@ function getItemsByDate(page, step, typeItem) { limit: offset + step, order: [['createdAt', 'DESC']], where: where - }); +}) } function getItemsByUserId(id, page, step, typeItem){ diff --git a/models/user.create.js b/models/user.create.js new file mode 100644 index 0000000..ef52cb3 --- /dev/null +++ b/models/user.create.js @@ -0,0 +1,34 @@ +var Sequelize = require('sequelize'); +var sequelize = require('./sequelize'); + +sequelize + .authenticate() + .then(() => { + console.log('Connection has been established successfully.'); + }) + .catch(err => { + console.error('Unable to connect to the database:', err); + }); + +var Users = sequelize.define('Users', { + uName: { + type : Sequelize.STRING, + allowNull: false, + unique: true, + }, + fName: Sequelize.STRING, + lName: Sequelize.STRING, + phoneNumber: Sequelize.STRING, + token: Sequelize.STRING, + expires: Sequelize.DATE, + id: { + type: Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true + } +},{ + timestamps: false, + tableUser: 'Users', +}); + +sequelize.sync({force:true}) diff --git a/models/user.model.js b/models/user.model.js index 1b65b7d..fa898d6 100644 --- a/models/user.model.js +++ b/models/user.model.js @@ -21,13 +21,32 @@ var Users = sequelize.define('Users', { lName: Sequelize.STRING, phoneNumber: Sequelize.STRING, token: Sequelize.STRING, - expires: Sequelize.DATE + expires: Sequelize.DATE, + id: { + type:Sequelize.INTEGER, + primaryKey: true, + autoIncrement: true + } },{ timestamps: false, tableUser: 'Users', }); -sequelize.sync({force:true}) +sequelize.sync()/*.then(() => { + Users.create({ + uName: '2015fleyn', + fName: 'Fley', + lName: 'Nicolas', + phoneNumber: '0650588938' + }) + + Users.create({ + uName: '2015cochetg', + fName: 'Cochet', + lName: 'Gabriel', + phoneNumber: '0664211239' + }) +})*/ function refreshUser(user){ expiresTime = user.toJSON().expires diff --git a/routes/item.route.js b/routes/item.route.js index a649409..12fdbc8 100644 --- a/routes/item.route.js +++ b/routes/item.route.js @@ -1,11 +1,32 @@ const express = require('express'); const itemModel = require('../models/item.model'); +const Users = require('../models/user.model'); const authMiddleware = require('../middlewares/authMiddleware'); const router = express.Router(); const DEFAULT_PAGE = 0; const DEFAULT_STEP = 10; +function joinUser(res,Items){ + result = [] + for(let i = 0; i!= Items.length; i++){ + Users.getUser(Items[i].userId).then(user => { + //console.log(user) + for(key in user.dataValues){ + Items[i].dataValues[key] = user.dataValues[key]; + } + result.push(Items[i].dataValues) + if(result.length == Items.length){ + res.send(JSON.stringify(result)) + //return result + } + }) + } + if(Items.length == 0){ + res.send("[]") + } +} + //router.use(authMiddleware.checkAuth()); router.get('/byId/:id', function(req, res) { @@ -21,7 +42,7 @@ router.get('/date', function(req, res) { page = DEFAULT_PAGE; if(isNaN(step)) step = DEFAULT_STEP; - itemModel.getItemsByDate(page, step, typeItem).then(out => res.json(out)); + itemModel.getItemsByDate(page, step, typeItem).then(Items => joinUser(res,Items)) }); router.get('/userId', function(req, res) { @@ -33,7 +54,7 @@ router.get('/userId', function(req, res) { page = DEFAULT_PAGE; if(isNaN(step)) step = DEFAULT_STEP; - itemModel.getItemsByUserId(userId, page, step, typeItem).then(out => res.json(out)); + itemModel.getItemsByUserId(userId, page, step, typeItem).then(Items => joinUser(res,Items)); }); router.get('/description', function(req, res) { @@ -44,7 +65,7 @@ router.get('/description', function(req, res) { page = DEFAULT_PAGE; if(isNaN(step)) step = DEFAULT_STEP; - itemModel.getItemsByDescription(req.query.desc, page, step, typeItem).then(out => res.json(out)); + itemModel.getItemsByDescription(req.query.desc, page, step, typeItem).then(Items => joinUser(res,Items)); }); router.post('/', function(req, res) { -- GitLab