From 12372ef4f298aeda0a3c0a1624891a39b3d47e1b Mon Sep 17 00:00:00 2001 From: Wenszel Date: Sat, 13 Mar 2021 17:53:11 +0100 Subject: [PATCH] added creating rooms in db --- backend/package-lock.json | 35 +++++++++++++++++++++++++++++++++++ backend/package.json | 1 + backend/routes/room.js | 16 ++++++++++++++++ backend/schemas/room.js | 4 +++- backend/server.js | 2 ++ package-lock.json | 17 +++++++++++++++++ package.json | 1 + src/App.js | 3 +-- src/components/NameInput.jsx | 19 +++++-------------- 9 files changed, 81 insertions(+), 17 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index c684ee4..063e465 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -5,6 +5,7 @@ "packages": { "": { "dependencies": { + "cors": "^2.8.5", "express": "^4.17.1", "mongoose": "^5.12.0" } @@ -135,6 +136,18 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -509,6 +522,14 @@ "node": ">= 0.6" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -884,6 +905,15 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -1154,6 +1184,11 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", diff --git a/backend/package.json b/backend/package.json index 232b024..7a42773 100644 --- a/backend/package.json +++ b/backend/package.json @@ -1,5 +1,6 @@ { "dependencies": { + "cors": "^2.8.5", "express": "^4.17.1", "mongoose": "^5.12.0" } diff --git a/backend/routes/room.js b/backend/routes/room.js index 7e408ec..ebd7b19 100644 --- a/backend/routes/room.js +++ b/backend/routes/room.js @@ -1,9 +1,25 @@ var express = require('express'); var router = express.Router(); +var RoomModel = require('../schemas/room'); + //creating new room in db router.post('/add', function (req, res) { + //setting values from request to object + let newRoom = new RoomModel({ + id: req.body.id, + createDate: req.body.createDate, + started: req.body.started, + players: req.body.players, + positions: req.body.positions + }); + + //saving room in db + newRoom.save() + .then(() => res.status(200).json('Added new room')) + .catch(err => res.status(400).json('Error: ' + err)); + }); //deleting room after game ends diff --git a/backend/schemas/room.js b/backend/schemas/room.js index 6a5f120..b60f357 100644 --- a/backend/schemas/room.js +++ b/backend/schemas/room.js @@ -10,4 +10,6 @@ var RoomSchema = new Schema({ positions: Map }); -var RoomModel = mongoose.model('RoomModel', RoomSchema ); \ No newline at end of file +var RoomModel = mongoose.model('RoomModel', RoomSchema ); + +module.exports = RoomModel; \ No newline at end of file diff --git a/backend/server.js b/backend/server.js index ee9db5e..3b7ac60 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,5 +1,7 @@ const express = require("express"); +const cors = require('cors'); const app = express(); +app.use(cors()); const PORT = 3000|| process.env.PORT; //DATABASE CONFIG diff --git a/package-lock.json b/package-lock.json index 1499a6a..9f30f11 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "@testing-library/jest-dom": "^5.11.9", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^12.8.3", + "axios": "^0.21.1", "react": "^17.0.1", "react-dom": "^17.0.1", "react-scripts": "4.0.3", @@ -3914,6 +3915,14 @@ "node": ">=4" } }, + "node_modules/axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "dependencies": { + "follow-redirects": "^1.10.0" + } + }, "node_modules/axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", @@ -24320,6 +24329,14 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.1.3.tgz", "integrity": "sha512-vwPpH4Aj4122EW38mxO/fxhGKtwWTMLDIJfZ1He0Edbtjcfna/R3YB67yVhezUMzqc3Jr3+Ii50KRntlENL4xQ==" }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, "axobject-query": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", diff --git a/package.json b/package.json index 2c27504..f5c93a6 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "@testing-library/jest-dom": "^5.11.9", "@testing-library/react": "^11.2.5", "@testing-library/user-event": "^12.8.3", + "axios": "^0.21.1", "react": "^17.0.1", "react-dom": "^17.0.1", "react-scripts": "4.0.3", diff --git a/src/App.js b/src/App.js index 036e830..cfff91e 100644 --- a/src/App.js +++ b/src/App.js @@ -1,10 +1,9 @@ -import './App.css'; import NameInput from './components/NameInput'; function App() { return (
- +
); } diff --git a/src/components/NameInput.jsx b/src/components/NameInput.jsx index ec2d8ac..6ebbe5a 100644 --- a/src/components/NameInput.jsx +++ b/src/components/NameInput.jsx @@ -1,23 +1,14 @@ import React, { useState } from 'react'; -const NameInput = ()=>{ +import axios from 'axios'; + +const NameInput = () => { const [inputValue, setInputValue] = useState(''); const handleInputChange = (e) => { setInputValue(e.target.value); } + const handleButtonClick = () => { - const request = { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ name: inputValue }) - }; - fetch('localhost:3000/room/add', request) - .then(response => { - if(response.status == 200){ - //redirect - }else{ - //error - } - }); + axios.post('http://localhost:3000/room/add') } return(