const fs = require('fs') const bodyParser = require('body-parser') const express = require('express') const router = express.Router() let db = JSON.parse(fs.readFileSync('./api/db/projects.json', 'utf8')) router.use(bodyParser.json()) router.use(bodyParser.urlencoded({ extended: true })) // Get project list. router.get('/', (req, res) => { const q = req.query.q if (q) { res.json(db.filter(item => item.name.toLowerCase().includes(q.toLowerCase()))) } else { res.json(db) } }) // Create a project. router.post('/', (req, res) => { const project = { id: db.reduce((x, y) => { return x.id > y.id ? x : y }).id + 1, name: req.body.name, description: req.body.description, guideline: 'Please write annotation guideline.', users: [1], project_type: req.body.project_type, image: '/static/assets/images/cats/text_classification.jpg', updated_at: '2019-08-21T02:49:48.790813Z', randomize_document_order: false } db.push(project) res.json(project) }) // Get a project. router.get('/:projectId', (req, res) => { const project = db.find(item => item.id === parseInt(req.params.projectId, 10)) if (project) { res.json(project) } else { res.status(404).json({ detail: 'Not found.' }) } }) // Update a project. router.put('/:projectId', (req, res) => { const projectIndex = db.findIndex(item => item.id === parseInt(req.params.projectId, 10)) if (projectIndex !== -1) { db[projectIndex] = req.body res.json(db[projectIndex]) } else { res.status(404).json({ detail: 'Not found.' }) } }) // Partially update a project user. router.patch('/:projectId', (req, res) => { const projectIndex = db.findIndex(item => item.id === parseInt(req.params.projectId, 10)) if (projectIndex !== -1) { Object.assign(db[projectIndex], req.body) res.json(db[projectIndex]) } else { res.status(404).json({ detail: 'Not found.' }) } }) // Delete a project. router.delete('/:projectId', (req, res, next) => { const project = db.find(item => item.id === parseInt(req.params.projectId, 10)) if (project) { db = db.filter(item => item.id !== parseInt(req.params.projectId, 10)) res.json(project) } else { res.status(404).json({ detail: 'Not found.' }) } }) module.exports = router