add articles and tags
This commit is contained in:
parent
3c09d935e1
commit
d44824e563
54
api/articles.js
Normal file
54
api/articles.js
Normal file
@ -0,0 +1,54 @@
|
||||
const router = require('express').Router()
|
||||
const { Project, Task, Article, Tag } = require('../db/models')
|
||||
module.exports = router
|
||||
|
||||
/* CREATE */
|
||||
router.post('/', async (req, res, next) => {
|
||||
try {
|
||||
const article = await Article.create(req.body)
|
||||
res.json(article)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
/* READ */
|
||||
router.get('/', async (req, res, next) => {
|
||||
try {
|
||||
const articles = await Article.findAll()
|
||||
res.send(articles)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
router.get('/:id', async (req, res, next) => {
|
||||
try {
|
||||
const article = await Article.findByPk(req.params.id)
|
||||
res.json(article)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
/* UPDATE */
|
||||
router.put('/:id', async (req, res, next) => {
|
||||
try {
|
||||
const article = await Article.findByPk(req.params.id)
|
||||
await article.update(req.body)
|
||||
res.json(article)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
/* DELETE */
|
||||
router.post('/:id/delete', async (req, res, next) => {
|
||||
try {
|
||||
const article = await Article.findByPk(req.params.id)
|
||||
await article.destroy({ force: true })
|
||||
res.json(article)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
@ -4,6 +4,8 @@ const ascii = require('../ascii')
|
||||
|
||||
router.use('/tasks', require('./tasks'))
|
||||
router.use('/projects', require('./projects'))
|
||||
router.use('/articles', require('./articles'))
|
||||
router.use('/tags', require('./tags'))
|
||||
|
||||
router.get('/', async (req, res, next) => {
|
||||
try {
|
||||
|
@ -1,5 +1,5 @@
|
||||
const router = require('express').Router()
|
||||
const { Project, Task } = require('../db/models')
|
||||
const { Project, Task, Article, Tag } = require('../db/models')
|
||||
module.exports = router
|
||||
|
||||
/* CREATE */
|
||||
@ -46,7 +46,7 @@ router.put('/:id', async (req, res, next) => {
|
||||
router.post('/:id/delete', async (req, res, next) => {
|
||||
try {
|
||||
const project = await Project.findByPk(req.params.id)
|
||||
project.destroy({ force: true })
|
||||
await project.destroy({ force: true })
|
||||
await Task.destroy({
|
||||
where: {
|
||||
projectId: req.params.id,
|
||||
|
54
api/tags.js
Normal file
54
api/tags.js
Normal file
@ -0,0 +1,54 @@
|
||||
const router = require('express').Router()
|
||||
const { Project, Task, Article, Tag } = require('../db/models')
|
||||
module.exports = router
|
||||
|
||||
/* CREATE */
|
||||
router.post('/', async (req, res, next) => {
|
||||
try {
|
||||
const tag = await Tag.create(req.body)
|
||||
res.json(tag)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
/* READ */
|
||||
router.get('/', async (req, res, next) => {
|
||||
try {
|
||||
const tags = await Tag.findAll()
|
||||
res.send(tags)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
router.get('/:id', async (req, res, next) => {
|
||||
try {
|
||||
const tag = await Tag.findByPk(req.params.id)
|
||||
res.json(tag)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
/* UPDATE */
|
||||
router.put('/:id', async (req, res, next) => {
|
||||
try {
|
||||
const tag = await Tag.findByPk(req.params.id)
|
||||
await tag.update(req.body)
|
||||
res.json(tag)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
||||
|
||||
/* DELETE */
|
||||
router.post('/:id/delete', async (req, res, next) => {
|
||||
try {
|
||||
const tag = await Tag.findByPk(req.params.id)
|
||||
await tag.destroy({ force: true })
|
||||
res.json(tag)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
})
|
@ -1,5 +1,5 @@
|
||||
const router = require('express').Router()
|
||||
const { Project, Task } = require('../db/models')
|
||||
const { Project, Task, Article, Tag } = require('../db/models')
|
||||
module.exports = router
|
||||
|
||||
/* CREATE */
|
||||
@ -53,7 +53,7 @@ router.put('/:id', async (req, res, next) => {
|
||||
router.post('/:id/delete', async (req, res, next) => {
|
||||
try {
|
||||
const task = await Task.findByPk(req.params.id)
|
||||
task.destroy({ force: true })
|
||||
await task.destroy({ force: true })
|
||||
res.json(task)
|
||||
} catch (err) {
|
||||
next(err)
|
||||
|
15
db/models/article.js
Normal file
15
db/models/article.js
Normal file
@ -0,0 +1,15 @@
|
||||
const Sequelize = require('sequelize')
|
||||
const db = require('../db')
|
||||
|
||||
const Article = db.define('articles', {
|
||||
title: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
text: {
|
||||
type: Sequelize.TEXT,
|
||||
allowNull: true,
|
||||
},
|
||||
})
|
||||
|
||||
module.exports = Article
|
@ -1,9 +1,13 @@
|
||||
const Task = require('./task')
|
||||
const Project = require('./project')
|
||||
const User = require('./user')
|
||||
const Article = require('./article')
|
||||
const Tag = require('./tag')
|
||||
|
||||
Project.hasMany(Task)
|
||||
Task.belongsTo(Project)
|
||||
Article.hasMany(Tag)
|
||||
Tag.belongsTo(Article)
|
||||
|
||||
User.belongsToMany(Project, { through: 'projectUser' })
|
||||
Project.hasMany(User)
|
||||
@ -11,4 +15,4 @@ Project.hasMany(User)
|
||||
Task.belongsToMany(User, { through: 'userTask' })
|
||||
User.hasMany(Task)
|
||||
|
||||
module.exports = { Task, Project, User }
|
||||
module.exports = { Task, Project, User, Article, Tag }
|
||||
|
11
db/models/tag.js
Normal file
11
db/models/tag.js
Normal file
@ -0,0 +1,11 @@
|
||||
const Sequelize = require('sequelize')
|
||||
const db = require('../db')
|
||||
|
||||
const Tag = db.define('tags', {
|
||||
name: {
|
||||
type: Sequelize.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
})
|
||||
|
||||
module.exports = Tag
|
11
db/seed.js
11
db/seed.js
@ -1,5 +1,5 @@
|
||||
const db = require('../db')
|
||||
const { Task, Project, User } = require('./models')
|
||||
const { Task, Project, User, Article, Tag } = require('./models')
|
||||
|
||||
const testTasks = [
|
||||
{
|
||||
@ -26,6 +26,10 @@ const testUsers = [
|
||||
{ name: 'dn', email: 'dn@ap.org' },
|
||||
]
|
||||
|
||||
const testArticles = [{ title: 'latest news', text: 'waddup?!' }]
|
||||
|
||||
const testTags = [{ name: 'dox', articleId: 1 }]
|
||||
|
||||
async function runSeed() {
|
||||
await db.sync({ force: true })
|
||||
console.log('db synced!')
|
||||
@ -48,6 +52,11 @@ async function runSeed() {
|
||||
await u1.addTasks([t1, t2])
|
||||
await u2.addTask(t3)
|
||||
|
||||
const projects = await Project.bulkCreate(testProjects)
|
||||
const tasks = await Task.bulkCreate(testTasks)
|
||||
const articles = await Article.bulkCreate(testArticles)
|
||||
const tags = await Tag.bulkCreate(testTags)
|
||||
|
||||
console.log('seeded successfully')
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
|
Loading…
x
Reference in New Issue
Block a user