Skip to content

Commit

Permalink
Bugfix/delete exercise not present (#49)
Browse files Browse the repository at this point in the history
* feat: fixed routes in exercises-routes

* test: added an edit exercise test endpoint

* feat:  tried grouping the scores in getScoreByDate

* refactor: removed print message

* feat: added test_database to gitignore

* bugfix: added delete controllers to endpoint
  • Loading branch information
chrisv09 authored Aug 22, 2024
1 parent 0c1b067 commit a84e7b8
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 64 deletions.
3 changes: 2 additions & 1 deletion server/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@

# dependencies
/node_modules
/db/database.sqlite
/db/database.sqlite
/db/test_database.sqlite
107 changes: 54 additions & 53 deletions server/controllers/exercises-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -76,17 +76,18 @@ const exerciseByNameDateAndSets = (req, res) => {


const getScoreByDate = (req, res) => {
const {date} = req.params
const { date } = req.params
knex
.select('exercises.muscle_group','exercises_history.date').sum('exercises_history.score')
.select('exercises.muscle_group', 'exercises_history.date').sum('exercises_history.score')
.from('exercises_history')


// Join with exercises table to get muscle group
.join('exercises', 'exercises_history.name', 'exercises.name')
.where('exercises_history.date', date)
.groupBy('exercises.muscle_group')


.then(userData => {

res.json(userData)
Expand Down Expand Up @@ -157,44 +158,44 @@ const logExerciseSet = (req, res) => {

//deletes an existing exercise
const deleteExercise = (req, res) => {
const {name} = req.params
const { name } = req.params

knex('exercises')
.where('name', name)
.del()
.then(result => {
if (result) {
res.status(200).json({ message: 'Exercise deleted successfully' });
} else {
res.status(404).json({ message: 'Exercise not found' });
}
})
.catch(error => {
res.status(500).json({ message: 'An error occurred while deleting an exercise', error: error.message });
});
.where('name', name)
.del()
.then(result => {
if (result) {
res.status(200).json({ message: 'Exercise deleted successfully' });
} else {
res.status(404).json({ message: 'Exercise not found' });
}
})
.catch(error => {
res.status(500).json({ message: 'An error occurred while deleting an exercise', error: error.message });
});

}

//deletes an existing set from exercise history
const deleteExerciseHistory = (req, res) => {
const {name, date, set} = req.params
const { name, date, set } = req.params

knex('exercises_history')
.where('name', name)
.where('date', date)
.where('set', set)
.del()
.then(result => {
if (result) {
res.status(200).json({ message: 'Set deleted successfully' });
} else {
res.status(404).json({ message: 'Set not found' });
}
})
.catch(error => {
res.status(500).json({ message: 'An error occurred while deleting a set', error: error.message });
});
.where('name', name)
.where('date', date)
.where('set', set)
.del()
.then(result => {
if (result) {
res.status(200).json({ message: 'Set deleted successfully' });
} else {
res.status(404).json({ message: 'Set not found' });
}
})
.catch(error => {
res.status(500).json({ message: 'An error occurred while deleting a set', error: error.message });
});

}

const editExercise = (req, res) => {
Expand All @@ -206,11 +207,11 @@ const editExercise = (req, res) => {
.update({
'name': newName,
'muscle_group': result
},['name'])
}, ['name'])

.then(data => {
if (data.length > 0) {
res.status(200).json({ message: 'Exercise was edited successfully'});
res.status(200).json({ message: 'Exercise was edited successfully' });
} else {
res.status(404).json({ message: `no exercise with name ${name}` });
}
Expand All @@ -224,37 +225,37 @@ const editExercise = (req, res) => {

const editSet = (req, res) => {
let name = req.params.name
let date= req.params.date
let set= req.params.set
let date = req.params.date
let set = req.params.set
let newName = req.params.newName
let newDate= req.params.newDate
let newSet= req.params.newSet
let weight= req.params.weight
let rep= req.params.rep
let score= req.params.score
let newDate = req.params.newDate
let newSet = req.params.newSet
let weight = req.params.weight
let rep = req.params.rep
let score = req.params.score

knex('exercises_history')

.where({
'name': name,
'date': date,
'sets':set
'name': name,
'date': date,
'sets': set
})

.update({
'name': newName,
'date': newDate,
'sets': newSet,
'weight': weight,
'reps':rep,
'score':score
},['name'])
'reps': rep,
'score': score
}, ['name'])




.then(data => {
if (data.length > 0) {
res.status(200).json({ message: 'Exercise was edited successfully'});
res.status(200).json({ message: 'Exercise was edited successfully' });
} else {
res.status(404).json({ message: `no set with name: ${name},date: ${date},and set number: ${set} ` });
}
Expand All @@ -280,4 +281,4 @@ export{
editExercise,
editSet,
getScoreByDate
};
};
Binary file modified server/db/test_database.sqlite
Binary file not shown.
6 changes: 3 additions & 3 deletions server/routes/exercises-routes.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// The routes for exercises
import express from 'express';
import { exercisesAll, exercisesAllHistory, exercisesDay, exerciseByNameDateAndSets, createExercise, logExerciseSet, getScoreByDate,editExercise,editSet,deleteExercise,deleteExerciseHistory } from '../controllers/exercises-controller.js';
import { exercisesAll, exercisesAllHistory, exercisesDay, exerciseByNameDateAndSets, createExercise, logExerciseSet, getScoreByDate, editExercise, editSet, deleteExercise, deleteExerciseHistory } from '../controllers/exercises-controller.js';


const router = express.Router()
Expand All @@ -26,7 +26,7 @@ router.post('/create/:name/:muscle_group', createExercise)
router.post('/Log/:name/:date/:set/:weight/:rep/:score', logExerciseSet)

//edit a exercise
router.put('/edit/:name/:newname/:muscle_group',editExercise)
router.put('/edit/:name/:newname/:muscle_group', editExercise)

//Delete an existing exercise
router.delete('/delete/:name', deleteExercise)
Expand All @@ -35,6 +35,6 @@ router.delete('/delete/:name', deleteExercise)
router.delete('/delete/:name/:date/:set', deleteExerciseHistory)

//edit a logged set of an exercise
router.put('/edit/log/:name/:date/:set/:newName/:newDate/:newSet/:weight/:rep/:score',editSet)
router.put('/edit/log/:name/:date/:set/:newName/:newDate/:newSet/:weight/:rep/:score', editSet)

export default router;
68 changes: 61 additions & 7 deletions server/tests/test1.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,25 @@ async function populateExercises() {
await knex('exercises').del();
await knex('exercises_history').del();
await knex('workouts').del();
await knex('routines').del();
await knex('exercises').insert([
{ name: 'Thingimajigs', muscle_group: 'Biceps' },
{ name: 'Thingies', muscle_group: 'Biceps' },
{ name: 'Pullies', muscle_group: 'Triceps' },
{ name: 'Pushies', muscle_group: 'Quadriceps' },
{ name: 'Workies', muscle_group: 'Quinticeps' }
]);
await knex('workouts').insert([
{ date: '19-08-2021' }]);
{ date: '2021-01-01' },
{ date: '2021-01-02' }]);
await knex('exercises_history').insert([
{ name: 'Thingimajigs', date: '2021-01-01', sets: 3, weight: 20, reps: 10 },
{ name: 'Pullies', date: '2021-01-01', sets: 3, weight: 20, reps: 10 },
{ name: 'Thingies', date: '2021-01-01', sets: 3, weight: 20, reps: 10, score: 300 },
{ name: 'Pullies', date: '2021-01-01', sets: 3, weight: 20, reps: 10, score: 300 },
{ name: 'Pushies', date: '2021-01-01', sets: 3, weight: 20, reps: 10, score: 300 },
{ name: 'Thingies', date: '2021-01-02', sets: 3, weight: 20, reps: 10, score: 300 },
])
await knex('routines').insert([
//{ name: 'pull', date: '2021-01-01' },
{ name: 'push', date: '2021-01-02' },
])
console.log('Data inserted successfully');
} catch (error) {
Expand Down Expand Up @@ -93,7 +101,7 @@ describe('Exercise API Endpoint Tests', () => {
.expect(200);

expect(res.body).to.be.an('array');
expect(res.body.length).to.equal(2);
expect(res.body.length).to.equal(3);
});

it('should return all exercises in history', async () => {
Expand All @@ -102,8 +110,53 @@ describe('Exercise API Endpoint Tests', () => {
.expect(200);

expect(res.body).to.be.an('array');
expect(res.body.length).to.equal(2); // Assuming 3 users from the seed data
expect(res.body.length).to.equal(4);
});

it('should edit an exercise', async () => {
const res = await request(app)
.put('/exercises/edit/Thingies/Thingimajigs/Biceps')
.expect(200);

expect(res.body.message).to.equal('Exercise was edited successfully');
});

it('should delete an exercise', async () => {
const res = await request(app)
.delete('/exercises/delete/Pullies')
.expect(200);

expect(res.body.message).to.equal('Exercise deleted successfully');
});

it('should get a score by date but using exerciseDay', async () => {
const res = await request(app)
.get('/exercises/2021-01-01')
.expect(200);

const res2 = await request(app)
.get('/exercises/all')
.expect(200);

// get list of muscle groups
let muscleGroups = res2.body.map(exercise => exercise.muscle_group);
let exercises = res.body

// create a dictionary of muscle groups and their scores
let scores = {};

for (const element of muscleGroups) {
scores[element] = 0;
}

// add up the scores for each muscle group
for (const exercise of exercises) {
scores[exercise.muscle_group] += exercise.score;
}

});


});

describe('Workout API Endpoint Tests', () => {
Expand All @@ -113,7 +166,7 @@ describe('Workout API Endpoint Tests', () => {
.expect(200);

expect(res.body).to.be.an('array');
expect(res.body.length).to.equal(1);
expect(res.body.length).to.equal(2);
});
});

Expand All @@ -124,5 +177,6 @@ describe('Routines API Endpoint Tests', () => {
.expect(200);

expect(res.body).to.be.an('array');
console.log(res.body);
});
});

0 comments on commit a84e7b8

Please sign in to comment.