Skip to content
Open

done #134

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -123,3 +123,5 @@ dist

# Databases
*.db3


4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ You are not allowed to collaborate during the sprint challenge.

## Project Set Up

- [ ] Run `npm install` to install your dependencies.
- [ ] Run tests locally executing `npm test`.
- [x] Run `npm install` to install your dependencies.
- [x] Run tests locally executing `npm test`.

## Project Instructions

Expand Down
13 changes: 13 additions & 0 deletions api/project/model.js
Original file line number Diff line number Diff line change
@@ -1 +1,14 @@
// build your `Project` model here

const db = require('../../data/dbConfig.js')

function getProjects() {
return db('projects');
}

async function insert(project) {
const [project_id] = await db('projects').insert(project);
return db('projects').where({ project_id }).first();
}

module.exports = { getProjects, insert };
42 changes: 42 additions & 0 deletions api/project/router.js
Original file line number Diff line number Diff line change
@@ -1 +1,43 @@
// build your `/api/projects` router here
const express = require('express')
const Projects = require('./model')
const router = require('express').Router()

router.post('/', (req, res, next) => {
Projects.insert(req.body)
.then(project => {
if (project.project_completed ===0){
project.project_completed = false;
res.status(201).json(project);
}else {
project.project_completed = true;
res.status(201).json(project);
}
})
.catch(next);
});

router.get('/', async (req, res, next) => {
await Projects.getProjects()
.then(projects => {
projects.map(project => {
if (project.project_completed ===0) {
project.project_completed = false;
} else {
project.project_completed = true;
}
})
res.status(200).json(projects)
})
.catch(next);
});

router.use((err, req, res, next) => {
res.status(500).json({
errorMessage: 'something went wrong',
message: err.message,
stack: err.stack,
});
});

module.exports = router;
16 changes: 16 additions & 0 deletions api/resource/model.js
Original file line number Diff line number Diff line change
@@ -1 +1,17 @@
// build your `Resource` model here

const db = require('../../data/dbConfig.js');

function getResources() {
return db('resources');
}

async function createResource(resource) {
const [resource_id] = await db('resources').insert(resource);
return getResources().where({ resource_id }).first();
}

module.exports = {
getResources,
createResource
}
21 changes: 21 additions & 0 deletions api/resource/router.js
Original file line number Diff line number Diff line change
@@ -1 +1,22 @@
// build your `/api/resources` router here
const express = require('express');
const Resource = require('./model')
const router = require('express').Router();

router.get('/',(req, res, next) => {
Resource.getResources()
.then(resources => {
res.status(200).json(resources);
})
.catch(next)
})

router.post('/', (req, res, next) => {
Resource.createResource(req.body)
.then(resource => {
res.status(201).json(resource);
})
.catch(next)
})

module.exports = router;
22 changes: 22 additions & 0 deletions api/server.js
Original file line number Diff line number Diff line change
@@ -1 +1,23 @@
// build your server here and require it from index.js
const express = require('express');

const projectsRouter = require('./project/router');
const resourceRouter = require('./resource/router');
const taskRouter = require('./task/router');

const server = express();

server.use(express.json());
server.use('/api/projects', projectsRouter);
server.use('/api/resources', resourceRouter);
server.use('/api/tasks', taskRouter);

server.use('*', (req, res) => {
res.json({ api: 'ready' })
})

server.use((err, req, res, next) => {
res.status(err.status || 500).json({ message: err.message })
})

module.exports = server;
15 changes: 15 additions & 0 deletions api/task/model.js
Original file line number Diff line number Diff line change
@@ -1 +1,16 @@
// build your `Task` model here
const db = require('../../data/dbConfig.js');

function getTasks() {
return db('tasks as t')
.select('t.*', 'p.project_name', 'p.project_description')
.join('projects as p', 'p.project_id', 't.project_id');
}

async function insert(task) {
const [task_id] = await db('tasks').insert(task);
return getTasks().where({ task_id }).first();
}


module.exports = { getTasks, insert };
33 changes: 33 additions & 0 deletions api/task/router.js
Original file line number Diff line number Diff line change
@@ -1 +1,34 @@
// build your `/api/tasks` router here
const express = require('express');
const Tasks = require('./model')
const router = require('express').Router();

router.get('/', (req,res,next)=>{
Tasks.getTasks()
.then(tasks =>{
tasks.map(task=>{
if (task.task_completed === 0){
task.task_completed = false;
}else{
task.task_completed = true;
}
})
res.status(200).json(tasks);
})
.catch(next);
})

router.post('/', (req,res,next)=>{
Tasks.insert(req.body)
.then(task =>{
if (task.task_completed === 0){
task.task_completed = false;
res.status(201).json(task);
}else{
task.task_completed = true;
res.status(201).json(task);
}
}).catch(next);
})

module.exports = router;
59 changes: 59 additions & 0 deletions data/migrations/20220305133956_initial-migration.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
/**
* @param { import("knex").Knex } knex
* @returns { Promise<void> }
*/
exports.up = async function(knex) {
await knex.schema
.createTable('projects', table => {
table.increments('project_id')
table.string('project_name', 200).notNullable()
table.string('project_description', 500)
table.boolean('project_completed').defaultTo(0)
})
.createTable('resources', table => {
table.increments('resource_id')
table.string('resource_name', 200).notNullable().unique()
table.string('resource_description', 500)
})
.createTable('tasks', table => {
table.increments('task_id')
table.string('task_description', 500).notNullable()
table.string('task_notes', 500)
table.boolean('task_completed').defaultTo(0)
table.integer('project_id')
.unsigned()
.notNullable()
.references('project_id')
.inTable('projects')
.onDelete('CASCADE')

})
.createTable('project_resources', table => {
table.increments('project_resource_id')
table.integer('project_id')
.unsigned()
.notNullable()
.references('project_id')
.inTable('projects')
.onDelete('restrict')
table.integer('resource_id')
.unsigned()
.notNullable()
.references('resource_id')
.inTable('resources')
.onDelete('CASCADE')
})

};

/**
* @param { import("knex").Knex } knex
* @returns { Promise<void> }
*/
exports.down = async function(knex) {
await knex.schema
.dropTableIfExists('project_resources')
.dropTableIfExists('tasks')
.dropTableIfExists('resources')
.dropTableIfExists('projects')
};
8 changes: 8 additions & 0 deletions data/seeds/01-cleanup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const { clean } = require('knex-cleaner')

exports.seed = function (knex) {
return clean(knex, {
mode: 'truncate',
ignoreTables: ['knex_migrations', 'knex_migrations_lock']
})
}
22 changes: 22 additions & 0 deletions data/seeds/02-start.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// const projects = [
// {}
// ]

// const resources = [
// {}
// ]

// const tasks = [
// {}
// ]

// const project_resources = [
// {}
// ]

// exports.seed = async function (knex) {
// await knex("projects").insert(projects)
// await knex("resources").insert(resources)
// await knex("tasks").insert(tasks)
// await knex("project_resources").insert(project_resources)
// }
8 changes: 8 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
@@ -1 +1,9 @@
// start your server here

require('dotenv').config()

const server = require('./api/server.js')

const PORT = process.env.PORT || 3000;

server.listen(PORT, () => console.log(`Listening on port ${PORT}...`))
Loading