From b391f12a397f1d8415fdf7040fc69bb1c98fdadf Mon Sep 17 00:00:00 2001 From: Alexis <35.alexis.pele@gmail.com> Date: Tue, 4 Aug 2020 21:13:31 +0200 Subject: [PATCH] - Added query params to spell routes --- database/auracle_db_create.sql | 2 +- repositories/spell-repository.js | 32 ++++++++++++++++++++++++++------ routes/spells.js | 16 ++++++++-------- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/database/auracle_db_create.sql b/database/auracle_db_create.sql index 2f62e0c..1809d37 100644 --- a/database/auracle_db_create.sql +++ b/database/auracle_db_create.sql @@ -1,5 +1,5 @@ DROP DATABASE IF EXISTS auracle; -CREATE DATABASE auracle CHARACTER SET utf8 COLLATE utf8_bin; +CREATE DATABASE auracle CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE auracle; /* =========== PRIMARY TABLES =========== */ diff --git a/repositories/spell-repository.js b/repositories/spell-repository.js index f694fde..23f2866 100644 --- a/repositories/spell-repository.js +++ b/repositories/spell-repository.js @@ -21,10 +21,21 @@ class SpellRepository { constructor() { } - getAll() { + getAll(name, description, level, charge, cost, ritual) { return new Promise((resolve, reject) => { - model.forge() - .fetchAll({ withRelated: ['schools.meta_schools', 'variables', 'ingredients'] }) + + let query = model.forge() + + console.log("science") + + if (name) { query.where('name', 'like', `%${name}%`) } + if (description) { query.where('description', 'like', `%${description}%`) } + if (level) { query.where({ 'level' : level }) } + if (charge) { query.where({ 'charge' : charge }) } + if (cost) { query.where({ 'cost' : cost }) } + if (ritual) { query.where({ 'is_ritual' : ritual }) } + + query.fetchAll({ withRelated: ['schools.meta_schools', 'variables', 'ingredients'] }) .then(v => { resolve(v.toJSON({ omitPivot: true })) }) @@ -35,11 +46,20 @@ class SpellRepository { }) } - getAllPublic() { + getAllPublic(name, description, level, charge, cost, ritual) { return new Promise((resolve, reject) => { - model.forge() + + let query = model.forge() .where({ 'public' : 1 }) - .fetchAll({ withRelated: ['schools.meta_schools', 'variables', 'ingredients'] }) + + if (name) { query.where('name', 'like', `%${name}%`) } + if (description) { query.where('description', 'like', `%${description}%`) } + if (level) { query.where({ 'level' : level }) } + if (charge) { query.where({ 'charge' : charge }) } + if (cost) { query.where({ 'cost' : cost }) } + if (ritual) { query.where({ 'is_ritual' : ritual }) } + + query.fetchAll({ withRelated: ['schools.meta_schools', 'variables', 'ingredients'] }) .then(v => { resolve(v.toJSON({ omitPivot: true })) }) diff --git a/routes/spells.js b/routes/spells.js index f0acaf0..621f38a 100644 --- a/routes/spells.js +++ b/routes/spells.js @@ -14,15 +14,15 @@ const Spells = new SpellReposity(); // ROUTES // GET ALL PUBLIC ------------------ -const getPublicSpells = () => { - return Spells.getAllPublic() +const getPublicSpells = (name, description, level, charge, cost, ritual) => { + return Spells.getAllPublic(name, description, level, charge, cost, ritual) .catch(err => { console.log(err) throw err }) } -router.get('/', async (req, res) => { - getPublicSpells() +router.get('//:name?/:description?/:level?/:charge?/:cost?/:ritual?/', async (req, res) => { + getPublicSpells(req.query.name, req.query.description, req.query.level, req.query.charge, req.query.cost, req.query.ritual) .then(v => { res.setHeader('Content-Type', 'application/json;charset=utf-8') res.end(JSON.stringify(v)) @@ -38,15 +38,15 @@ router.get('/', async (req, res) => { }) // GET ALL ------------------ -const getSpells = () => { - return Spells.getAll() +const getSpells = (name, description, level, charge, cost, ritual) => { + return Spells.getAll(name, description, level, charge, cost, ritual) .catch(err => { console.log(err) throw err }) } -router.get('/private', async (req, res) => { - getSpells() +router.get('/private/:name?/:description?/:level?/:charge?/:cost?/:ritual?/', async (req, res) => { + getSpells(req.query.name, req.query.description, req.query.level, req.query.charge, req.query.cost, req.query.ritual) .then(v => { res.setHeader('Content-Type', 'application/json;charset=utf-8') res.end(JSON.stringify(v))