From 3c2905d177dee391ddac988f393e72615319a5d3 Mon Sep 17 00:00:00 2001 From: JonasBeer Date: Tue, 13 Jun 2023 23:18:06 +0200 Subject: [PATCH] Added inventoryModel.js and listingModel.js with some database selection logic --- app/controllers/inventoryController.js | 18 +++++++++ app/controllers/listingController.js | 52 ++++++++++++++++++++++++++ app/models/inventoryModel.js | 20 ++++++++++ app/models/listingModel.js | 49 ++++++++++++++++++++++++ app/models/userModel.js | 2 +- 5 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 app/controllers/inventoryController.js create mode 100644 app/controllers/listingController.js create mode 100644 app/models/inventoryModel.js create mode 100644 app/models/listingModel.js diff --git a/app/controllers/inventoryController.js b/app/controllers/inventoryController.js new file mode 100644 index 0000000..ed25eb0 --- /dev/null +++ b/app/controllers/inventoryController.js @@ -0,0 +1,18 @@ +const inventoryModel = require('../models/inventoryModel'); + + +function getUserInventory(req,res,next){ + inventoryModel.getUserInventory(parseInt(req.params.id)) + .then((inventory)=>{ + res.json(inventory); // this was: res.render('inventory', {inventory}); + }) + .catch((err)=>{ + res.status(404); + next(err); + }) + +} + +module.exports = { + getUserInventory +} \ No newline at end of file diff --git a/app/controllers/listingController.js b/app/controllers/listingController.js new file mode 100644 index 0000000..a687925 --- /dev/null +++ b/app/controllers/listingController.js @@ -0,0 +1,52 @@ +const listingModel = require('../models/listingModel'); + +function getAllListings(req,res,next){ + listingModel.getAllListings() + .then((listings)=>{ + res.json(listings); + }) + .catch((err)=>{ + res.status(404); + next(err); + }) +} + +function getCTListings(req,res,next){ + listingModel.getListingByTeam(CT) + .then((listing)=>{ + res.json(listing); + }) + .catch((err)=>{ + res.status(404); + next(err); + }) +} + +function getTListings(req,res,next){ + listingModel.getListingByTeam(T) + .then((listing)=>{ + res.json(listing); + }) + .catch((err)=>{ + res.status(404); + next(err); + }) +} + +function addListing(req,res,next){ + listingModel.addListing(req.body) // req.body is the data from the form, is then parsed into "listingData" in the model + .then((listing)=>{ + res.json(listing); // redirect to /listings?? + }) + .catch((err)=>{ + res.status(404); + next(err); + }) +} + + +module.exports = { + getAllListings, + getCTListings, + getTListings, +} \ No newline at end of file diff --git a/app/models/inventoryModel.js b/app/models/inventoryModel.js new file mode 100644 index 0000000..9334fec --- /dev/null +++ b/app/models/inventoryModel.js @@ -0,0 +1,20 @@ +//database access + +const db = require('../config/database').config; + +let getUserInventory = (id) => new Promise((resolve,reject)=>{ // the ID is the user ID + db.query(`SELECT CCL_inventory.userWeaponID, CCL_weapons.id, CCL_weapons.image, CCL_weapons.rarity, CCL_weapons.name FROM CCL_inventory + INNER JOIN CCL_weapons + ON CCL_inventory.weaponID = CCL_weapons.id + WHERE CCL_inventory.userID =${id};`, function (err, inventory, fields){ + if(err){ + reject(err); + } + resolve(inventory); + }); +}); + + +module.exports= { + getUserInventory +} \ No newline at end of file diff --git a/app/models/listingModel.js b/app/models/listingModel.js new file mode 100644 index 0000000..10d805b --- /dev/null +++ b/app/models/listingModel.js @@ -0,0 +1,49 @@ +const db = require('../config/database').config; + +let getAllListings = () => new Promise(async (resolve,reject)=>{ + let sql = `SELECT * FROM CCL_listings`; + db.query(sql, function (err, listing, fields){ + if(err){ + reject(err); + } + resolve(listing[0]); + }); +}); + +// get all info by a specific listing: +// SELECT * FROM CCL_listings INNER JOIN CCL_inventory ON CCL_listings.sellerWeaponID = CCL_inventory.userWeaponID INNER JOIN CCL_weapons ON CCL_inventory.weaponID = CCL_weapons.id WHERE [key] = [value] +let getListingByTeam = (Team) => new Promise(async (resolve,reject)=>{ + + let sql = "SELECT * FROM CCL_listings INNER JOIN CCL_inventory ON CCL_listings.sellerWeaponID = CCL_inventory.userWeaponID INNER JOIN CCL_weapons ON CCL_inventory.weaponID = CCL_weapons.id WHERE CCL_weapons.team = " + db.escape(Team); + console.log(sql); + + db.query(sql, function (err, listing, fields){ + if(err){ + reject(err); + } + resolve(listing); + }); + +}); +let addListing = (listingData) => new Promise( async (resolve,reject)=> { + + let sql = "INSERT INTO CCL_listings (sellerID, sellerWeaponID, price) VALUES (" + + db.escape(listingData.team) + ", " + + db.escape(listingData.price)+ ", " + + db.escape(listingData.weaponID)+ ")" ; + console.log(sql); + + db.query(sql, function (err, result, fields){ + if(err) { + reject(err) + } + resolve(listingData) + }); + +}); + +module.exports = { + getAllListings, + getListingByTeam, + addListing, +} \ No newline at end of file diff --git a/app/models/userModel.js b/app/models/userModel.js index 1a34160..d36558a 100644 --- a/app/models/userModel.js +++ b/app/models/userModel.js @@ -1,4 +1,4 @@ -const db = require('../services/database.js').config; +const db = require('../config/database').config; const bcrypt = require('bcrypt');