- Added update methods for spell API

This commit is contained in:
Alexis
2020-05-19 23:12:28 +02:00
parent b0bd343018
commit 63c7dc5d09

View File

@@ -137,14 +137,13 @@ router.post('/', async (req, res, next) => {
// UPDATE ONE ------------------ // UPDATE ONE ------------------
const updateSpell = (s, id) => { const updateSpell = (s, id) => {
return new Promise((resolve, reject) => { return new Promise( async (resolve, reject) => {
// Check if spell exists // Check if spell exists
// try { let old_spell = await getSpell(id)
// let old_spell = getSpell(id).catch(err => { throw err }) .catch(err => {
// } catch (err) { reject(err)
// reject(err) })
// }
// Checks if body exists and if the model fits, and throws errors if it doesn't // Checks if body exists and if the model fits, and throws errors if it doesn't
if (isEmptyObject(s)) { if (isEmptyObject(s)) {
@@ -154,16 +153,88 @@ const updateSpell = (s, id) => {
} }
let query = let query =
`UPDATE spell SET name = "test spell", description = "test", level = 999, charge = 999, cost = "cher", is_ritual = false WHERE id = ${db.escape(id)}` 'UPDATE spell SET '
if (s.name != undefined) { query += `name = "${s.name}" ` }
if (s.description != undefined) { query += `, description = "${s.description}" ` }
if (s.level != undefined) { query += `, level = ${s.level} ` }
if (s.charge != undefined) { query += `, charge = ${s.charge} ` }
if (s.cost != undefined) { query += `, cost = "${s.cost}" ` }
if (s.is_ritual != undefined) { query += `, is_ritual = ${s.is_ritual} ` }
query += ` WHERE id = ${db.escape(id)}`
db.query(query, async (err, result) => { db.query(query, async (err, result) => {
if (err) { if (err) {
throw new HttpError(500, 'Error: Database error') reject(new HttpError(500, 'Error: Database error - Spell update failed'))
} else { } else {
console.log(`Spell "${s.name}" updated at ID ${result.insertId}, affecting ${result.affectedRows} row(s)`) console.log(result)
resolve(result);
} }
}) })
// If req.body has a school list of ids
if (s.schools.length > 0) {
let delete_schools_query =
`DELETE FROM spells_schools WHERE id_spell = ${old_spell.id}`
db.query(delete_schools_query, async (err, result) => {
if (err) {
reject(new HttpError(500, 'Error: Database error - Spell school deletion failed.'))
}
})
for (let i = 0; i < s.schools.length; i++) {
let update_schools_query = `INSERT INTO spells_schools (id_spell, id_school) VALUES (${old_spell.id}, ${s.schools[i].id})`
db.query(update_schools_query, async (err, result) => {
if (err) {
reject(new HttpError(500, 'Error: Database error - Spell school update failed.'))
}
})
}
}
// If req.body has a variable list of ids
if (s.variables.length > 0) {
let delete_variables_query =
`DELETE FROM spells_variables WHERE id_spell = ${old_spell.id}`
db.query(delete_variables_query, async (err, result) => {
if (err) {
reject(new HttpError(500, 'Error: Database error - Spell variable deletion failed.'))
}
})
for (let i = 0; i < s.variables.length; i++) {
let update_variables_query = `INSERT INTO spells_variables (id_spell, id_variable) VALUES (${old_spell.id}, ${s.variables[i].id})`
db.query(update_variables_query, async (err, result) => {
if (err) {
reject(new HttpError(500, 'Error: Database error - Spell variable update failed.'))
}
})
}
}
// If req.body has a variable list of ids
if (s.ingredients.length > 0) {
let delete_ingredients_query =
`DELETE FROM spells_ingredients WHERE id_spell = ${old_spell.id}`
db.query(delete_ingredients_query, async (err, result) => {
if (err) {
reject(new HttpError(500, 'Error: Database error - Spell ingredients deletion failed.'))
}
})
for (let i = 0; i < s.ingredients.length; i++) {
let update_ingredients_query = `INSERT INTO spells_ingredients (id_spell, id_ingredient) VALUES (${old_spell.id}, ${s.ingredients[i].id})`
db.query(update_ingredients_query, async (err, result) => {
if (err) {
reject(new HttpError(500, 'Error: Database error - Spell ingredients update failed.'))
}
})
}
}
}) })
} }
router.put('/:id/', async (req, res, next) => { router.put('/:id/', async (req, res, next) => {