| @@ -0,0 +1,22 @@ | ||
| import React from 'react'; | ||
| import Nav from '../components/Nav'; | ||
| import Lists from '../components/lists/Lists'; | ||
|
|
||
| const BucketPage = () => { | ||
| let { id, name } = document.getElementById('app').dataset | ||
| return ( | ||
| <div> | ||
| <Nav /> | ||
| <div className="container"> | ||
|
|
||
| <h2 className="center">{name}</h2> | ||
| <hr /> | ||
|
|
||
| <Lists bucketId={id} /> | ||
| </div> | ||
|
|
||
| </div> | ||
| ) | ||
| } | ||
|
|
||
| export default BucketPage; |
| @@ -0,0 +1,8 @@ | ||
| const mongoose = require('mongoose'); | ||
| const Schema = mongoose.Schema; | ||
|
|
||
| const Bucket = new Schema({ | ||
| name: { type: String, required: true } | ||
| }); | ||
|
|
||
| module.exports = mongoose.model( 'Bucket', Bucket ); |
| @@ -0,0 +1,9 @@ | ||
| const mongoose = require( 'mongoose' ); | ||
| const Schema = mongoose.Schema; | ||
|
|
||
| const Card = new Schema({ | ||
| name: { type: String, required: true }, | ||
| listId: { type: String, required: true } | ||
| }); | ||
|
|
||
| module.exports = mongoose.model( 'Card', Card ); |
| @@ -0,0 +1,9 @@ | ||
| const mongoose = require('mongoose'); | ||
| const Schema = mongoose.Schema; | ||
|
|
||
| const List = new Schema({ | ||
| name: { type: String, required: true }, | ||
| bucketId: { type: String, required: true } | ||
| }); | ||
|
|
||
| module.exports = mongoose.model( 'List', List ); |
| @@ -0,0 +1,52 @@ | ||
| const express = require('express'); | ||
| const router = express.Router(); | ||
| const Bucket = require('../models/bucket'); | ||
| const List = require('../models/list'); | ||
| const Card = require('../models/card'); | ||
|
|
||
| router.get('/', (req, res) => { | ||
| Bucket.find( ( err, buckets ) => { | ||
| res.json(buckets); | ||
| }); | ||
| }); | ||
|
|
||
| router.post('/', (req, res) => { | ||
| new Bucket({ | ||
| name: req.body.name | ||
| }).save( (err, bucket) => { | ||
| res.json(bucket); | ||
| }); | ||
| }); | ||
|
|
||
| router.put('/:id', ( req, res ) => { | ||
| let { name } = req.body; | ||
| Bucket.findByIdAndUpdate( | ||
| req.params.id, | ||
| { $set: { name }}, | ||
| { new: true }, | ||
| (err, bucket) => { | ||
| res.json(bucket); | ||
| }); | ||
| }); | ||
|
|
||
| router.delete('/:id', (req, res) => { | ||
| let bucketId = req.params.id; | ||
| Bucket.findById(bucketId, (err, bucket) => { | ||
| bucket.remove(); | ||
| List.find({ bucketId }, (err, lists) => { | ||
| lists.forEach( list => { | ||
| Card.find({'listId': list._id}).remove().exec(); | ||
| list.remove() | ||
| } ); | ||
| }); | ||
| res.status(200).send({success: true}); | ||
| }); | ||
| }); | ||
|
|
||
| router.get('/:id', (req, res) => { | ||
| Bucket.findById(req.params.id, (err, bucket) => { | ||
| res.render('bucket', { bucket }) | ||
| }) | ||
| }); | ||
|
|
||
| module.exports = router; |
| @@ -0,0 +1,28 @@ | ||
| const express = require('express'); | ||
| const router = express.Router(); | ||
| const Card = require('../models/card'); | ||
|
|
||
| router.get('/', (req, res) => { | ||
| Card.find({ listId: req.query.listId }, ( err, cards ) => { | ||
| res.json(cards); | ||
| }); | ||
| }); | ||
|
|
||
| router.post('/', (req, res) => { | ||
| let { listId, name } = req.body; | ||
| new Card({ | ||
| name, | ||
| listId | ||
| }).save( (err, list) => { | ||
| res.json(list); | ||
| }); | ||
| }); | ||
|
|
||
| router.delete('/:id', (req, res) => { | ||
| Card.findById(req.params.id, (err, card) => { | ||
| card.remove(); | ||
| res.status(200).send({success: true}); | ||
| }); | ||
| }); | ||
|
|
||
| module.exports = router; |
| @@ -0,0 +1,30 @@ | ||
| const express = require('express'); | ||
| const router = express.Router(); | ||
| const List = require('../models/list'); | ||
| const Card = require('../models/card'); | ||
|
|
||
| router.get('/', (req, res) => { | ||
| List.find({ bucketId: req.query.bucketId }, ( err, buckets ) => { | ||
| res.json(buckets); | ||
| }); | ||
| }); | ||
|
|
||
| router.post('/', (req, res) => { | ||
| let { bucketId, name } = req.body; | ||
| new List({ | ||
| name, | ||
| bucketId | ||
| }).save( (err, list) => { | ||
| res.json(list); | ||
| }); | ||
| }); | ||
|
|
||
| router.delete('/:id', (req, res) => { | ||
| List.findById(req.params.id, (err, list) => { | ||
| list.remove(); | ||
| Card.find({'listId': req.query.id}).remove().exec( (err, list) => { | ||
| res.status(200).send({success: true}); | ||
| }); | ||
| }); | ||
| }); | ||
| module.exports = router; |
| @@ -0,0 +1,5 @@ | ||
| extends layout | ||
| block content | ||
| #app(data-id = bucket._id, data-name = bucket.name) | ||
| - src = process.env.NODE_ENV === 'production' ? 'bucket.js' : 'http://localhost:8080/bucket.js' | ||
| script(src=src) |