From 93814b745a40d46b6b812fab42e63f211bfd62d4 Mon Sep 17 00:00:00 2001 From: notnull Date: Mon, 8 Jul 2019 14:40:04 -0400 Subject: [PATCH] Added user model and api routes --- api/tasks.js | 13 +++++------ api/users.js | 54 ++++++++++++++++++++++++++++++++++++++++++++++ db/models/index.js | 11 ++++++++-- db/models/user.js | 20 +++++++++++++++++ db/seed.js | 28 ++++++++++++++++++++---- 5 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 api/users.js create mode 100644 db/models/user.js diff --git a/api/tasks.js b/api/tasks.js index a6e5c04..5ac1e7c 100755 --- a/api/tasks.js +++ b/api/tasks.js @@ -4,14 +4,15 @@ module.exports = router /* CREATE */ router.post('/', async (req, res, next) => { - const project = await Project.findOne({ - where: { name: req.body.projectName }, - }) - await console.log('Project\n', project.id) try { const task = await Task.create(req.body) - await task.setProject(project.id) - await console.log('task.projectId:', task.projectId) + + if (req.body.projectId) { + const project = await Project.findOne({ + where: { id: req.body.projectId }, + }) + await task.setProject(project.id) + } res.json(task) } catch (err) { next(err) diff --git a/api/users.js b/api/users.js new file mode 100644 index 0000000..862b9b1 --- /dev/null +++ b/api/users.js @@ -0,0 +1,54 @@ +const router = require('express').Router() +const { User } = require('../db/models') +module.exports = router + +/* CREATE */ +router.post('/', async (req, res, next) => { + try { + const user = await User.create(req.body) + res.json(user) + } catch (err) { + next(err) + } +}) + +/* READ */ +router.get('/', async (req, res, next) => { + try { + const users = await User.findAll() + res.send(users) + } catch (err) { + next(err) + } +}) + +router.get('/:id', async (req, res, next) => { + try { + const user = await User.findByPk(req.params.id) + res.json(user) + } catch (err) { + next(err) + } +}) + +/* UPDATE */ +router.put('/:id', async (req, res, next) => { + try { + const user = await User.findByPk(req.params.id) + await user.update(req.body) + res.json(user) + } catch (err) { + next(err) + } +}) + +/* DELETE */ +router.post('/:id/delete', async (req, res, next) => { + try { + const user = await User.findByPk(req.params.id) + user.destroy({ force: true }) + res.json(user) + } catch (err) { + next(err) + } +}) diff --git a/db/models/index.js b/db/models/index.js index 324c07c..9c2cd3f 100755 --- a/db/models/index.js +++ b/db/models/index.js @@ -1,7 +1,14 @@ -const Project = require('./project') const Task = require('./task') +const Project = require('./project') +const User = require('./user') Project.hasMany(Task) Task.belongsTo(Project) -module.exports = { Task, Project } +User.belongsToMany(Project, { through: 'projectUser' }) +Project.hasMany(User) + +Task.belongsToMany(User, { through: 'userTask' }) +User.hasMany(Task) + +module.exports = { Task, Project, User } diff --git a/db/models/user.js b/db/models/user.js new file mode 100644 index 0000000..0555b69 --- /dev/null +++ b/db/models/user.js @@ -0,0 +1,20 @@ +const Sequelize = require('sequelize') +const db = require('../db') + +const User = db.define('users', { + name: { + type: Sequelize.STRING, + allowNull: false, + }, + + email: { + type: Sequelize.STRING, + }, + + avatar: { + type: Sequelize.STRING, + defaultValue: 'default-user-img.png', + }, +}) + +module.exports = User diff --git a/db/seed.js b/db/seed.js index b1884e2..b7d967a 100755 --- a/db/seed.js +++ b/db/seed.js @@ -1,5 +1,5 @@ const db = require('../db') -const { Task, Project } = require('./models') +const { Task, Project, User } = require('./models') const testTasks = [ { @@ -15,18 +15,38 @@ const testTasks = [ { desc: 'eat dinner', completed: false, + projectId: 1, }, ] -const testProjects = [{ name: 'Anarchy Planet' }] +const testProjects = [{ name: 'Anarchy Planet' }, { name: 'Tilde' }] + +const testUsers = [ + { name: 'nn', email: 'nn@ap.org' }, + { name: 'dn', email: 'dn@ap.org' }, +] async function runSeed() { await db.sync({ force: true }) console.log('db synced!') console.log('seeding...') try { - const projects = await Project.bulkCreate(testProjects) - const tasks = await Task.bulkCreate(testTasks) + const p1 = await Project.create(testProjects[0]) + const p2 = await Project.create(testProjects[1]) + + const u1 = await User.create(testUsers[0]) + const u2 = await User.create(testUsers[1]) + + const t1 = await Task.create(testTasks[0]) + const t2 = await Task.create(testTasks[1]) + const t3 = await Task.create(testTasks[2]) + + await p1.addTask(t1) + await p1.addTask(t2) + await p2.addTask(t3) + + await u1.addTasks([t1, t2]) + await u2.addTask(t3) console.log('seeded successfully') } catch (err) {