diff --git a/05-node/00-basic files for all/dist/server.js b/05-node/00-basic files for all/dist/server.js new file mode 100644 index 000000000..8436a9ea8 --- /dev/null +++ b/05-node/00-basic files for all/dist/server.js @@ -0,0 +1,8 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const express_1 = __importDefault(require("express")); +const app = express_1.default(); +const port = process.env.PORT || 3000; diff --git a/05-node/00-basic files for all/server.ts b/05-node/00-basic files for all/server.ts index e69de29bb..9faa1fd52 100644 --- a/05-node/00-basic files for all/server.ts +++ b/05-node/00-basic files for all/server.ts @@ -0,0 +1,3 @@ +import express from "express" +const app = express() +const port = process.env.PORT || 3000 \ No newline at end of file diff --git a/05-node/05-Routes/class puzzel/tamar_grop/package.json b/05-node/05-Routes/class puzzel/tamar_grop/package.json new file mode 100644 index 000000000..388af5d5e --- /dev/null +++ b/05-node/05-Routes/class puzzel/tamar_grop/package.json @@ -0,0 +1,24 @@ +{ + "name": "example", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "build": "tsc", + "dev": "nodemon server.ts", + "start": "node dist/server.js", + "update": "npm install -g npm-check-updates && ncu -u && npm install" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "nodemon": "^3.0.1", + "ts-node": "^10.9.1", + "typescript": "^5.1.6" + }, + "dependencies": { + "express": "^4.18.2" + } +} diff --git a/05-node/05-Routes/class puzzel/tamar_grop/server.ts b/05-node/05-Routes/class puzzel/tamar_grop/server.ts new file mode 100644 index 000000000..e69de29bb diff --git a/05-node/05-Routes/class puzzel/tamar_grop/tsconfig.json b/05-node/05-Routes/class puzzel/tamar_grop/tsconfig.json new file mode 100644 index 000000000..bd2ebf947 --- /dev/null +++ b/05-node/05-Routes/class puzzel/tamar_grop/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "module": "commonjs", + "esModuleInterop": true, + "target": "es6", + "moduleResolution": "node", + "sourceMap": true, + "outDir": "dist" + }, + "lib": ["es2015"] + } \ No newline at end of file diff --git a/05-node/05-Routes/example/API/users/dist/userCont.js b/05-node/05-Routes/example/API/users/dist/userCont.js new file mode 100644 index 000000000..185b1bc6f --- /dev/null +++ b/05-node/05-Routes/example/API/users/dist/userCont.js @@ -0,0 +1,56 @@ +"use strict"; +exports.__esModule = true; +exports.updateUser = exports.deleteUser = exports.getUsers = exports.addUser = void 0; +var userModel_1 = require("./userModel"); +var users = [ + new userModel_1.User({ name: "test", phoneNum: "052-5381648", imgUrl: "bla" }) +]; +//add user controler +exports.addUser = function (req, res) { + var user = req.body; + console.log(user); + //add to users array + users.push(new userModel_1.User(user)); // --> add to Database + console.log(users); + res.send({ user: user }); +}; +//get users +exports.getUsers = function (req, res) { + try { + res.send({ users: users }); + } + catch (error) { + console.error(error); + } +}; +exports.deleteUser = function (req, res) { + try { + var id_1 = req.body.id; + console.log(id_1); + if (!id_1) + throw new Error("there is no id"); + users = users.filter(function (user) { return user.id !== id_1; }); //delete from the array + res.send({ users: users }); + } + catch (error) { + console.error(error); + res.send({ error: error }); + } +}; +exports.updateUser = function (req, res) { + try { + var _a = req.body, phoneNum = _a.phoneNum, id_2 = _a.id; + console.log(req.body); + if (!phoneNum || !id_2) + throw new Error("Please complete all fields"); + var user = users.find(function (user) { return user.id === id_2; }); + if (!user) + throw new Error("user not found"); + user.phoneNum = phoneNum; + res.send({ users: users }); + } + catch (error) { + console.error(error); + res.send({ error: error }); + } +}; diff --git a/05-node/05-Routes/example/API/users/dist/userModel.js b/05-node/05-Routes/example/API/users/dist/userModel.js new file mode 100644 index 000000000..3e6bce974 --- /dev/null +++ b/05-node/05-Routes/example/API/users/dist/userModel.js @@ -0,0 +1,14 @@ +"use strict"; +exports.__esModule = true; +exports.User = void 0; +var User = /** @class */ (function () { + function User(_a) { + var name = _a.name, phoneNum = _a.phoneNum, imgUrl = _a.imgUrl; + this.name = name; + this.phoneNum = phoneNum; + this.imgUrl = imgUrl; + this.id = Math.random().toString(); + } + return User; +}()); +exports.User = User; diff --git a/05-node/05-Routes/example/API/users/dist/userRouter.js b/05-node/05-Routes/example/API/users/dist/userRouter.js new file mode 100644 index 000000000..6c6a62a1e --- /dev/null +++ b/05-node/05-Routes/example/API/users/dist/userRouter.js @@ -0,0 +1,10 @@ +"use strict"; +exports.__esModule = true; +var express_1 = require("express"); +var userCont_1 = require("./userCont"); +var router = express_1["default"].Router(); +router + .get('/get-users', userCont_1.getUsers) + .post("/add-user", userCont_1.addUser)["delete"]("/delete-user", userCont_1.deleteUser) + .patch('/update-user', userCont_1.updateUser); +exports["default"] = router; diff --git a/05-node/05-Routes/example/API/users/userCont.ts b/05-node/05-Routes/example/API/users/userCont.ts new file mode 100644 index 000000000..2441dffb2 --- /dev/null +++ b/05-node/05-Routes/example/API/users/userCont.ts @@ -0,0 +1,54 @@ +import { User } from "./userModel"; + +let users: User[] = [ + new User({name:"test", phoneNum:"052-5381648", imgUrl:"bla"}) +]; + +//add user controler +export const addUser = (req: any, res: any) => { + const user: User = req.body; + console.log(user); + //add to users array + users.push(new User(user)); // --> add to Database + console.log(users); + res.send({ user }); +} + +//get users +export const getUsers = (req, res) => { + try { + res.send({ users }); + } catch (error) { + console.error(error); + } +} + +export const deleteUser = (req, res) => { + try { + const { id } = req.body; + console.log(id); + if (!id) throw new Error("there is no id"); + + users = users.filter((user) => user.id !== id); //delete from the array + res.send({ users }); + } catch (error) { + console.error(error); + res.send({ error }); + } +} + +export const updateUser = (req: any, res: any) => { + try { + const { phoneNum, id } = req.body; + console.log(req.body); + if (!phoneNum || !id) throw new Error("Please complete all fields"); + const user = users.find((user) => user.id === id); + + if (!user) throw new Error("user not found"); + user.phoneNum = phoneNum; + res.send({ users }); + } catch (error) { + console.error(error); + res.send({ error }); + } +} \ No newline at end of file diff --git a/05-node/05-Routes/example/API/users/userModel.ts b/05-node/05-Routes/example/API/users/userModel.ts new file mode 100644 index 000000000..95a2e103f --- /dev/null +++ b/05-node/05-Routes/example/API/users/userModel.ts @@ -0,0 +1,12 @@ +export class User { + name: string; + phoneNum: string; + imgUrl: string; + id: string; + constructor({ name, phoneNum, imgUrl }: {name:string, phoneNum:string, imgUrl:string}) { + this.name = name; + this.phoneNum = phoneNum; + this.imgUrl = imgUrl; + this.id = Math.random().toString(); + } + } \ No newline at end of file diff --git a/05-node/05-Routes/example/API/users/userRouter.ts b/05-node/05-Routes/example/API/users/userRouter.ts new file mode 100644 index 000000000..3e63e848b --- /dev/null +++ b/05-node/05-Routes/example/API/users/userRouter.ts @@ -0,0 +1,13 @@ +import express from 'express' +import { getUsers, addUser, deleteUser, updateUser } from './userCont'; +const router = express.Router(); + + +router + .get('/get-users', getUsers) + .post("/add-user", addUser) + .delete("/delete-user", deleteUser) + .patch('/update-user', updateUser) + + +export default router; \ No newline at end of file diff --git a/05-node/05-Routes/example/dist/server.js b/05-node/05-Routes/example/dist/server.js new file mode 100644 index 000000000..de42e3d26 --- /dev/null +++ b/05-node/05-Routes/example/dist/server.js @@ -0,0 +1,24 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const express_1 = __importDefault(require("express")); +const app = express_1.default(); +const port = process.env.PORT || 3000; +//static files +app.use(express_1.default.static("public")); +//body +app.use(express_1.default.json()); +//router to products +// get router from productsRouter +const productsRouter_1 = __importDefault(require("./API/products/productsRouter")); +//tells express to use proudctsRouter on the intial route "/API/products" +app.use("/API/products", productsRouter_1.default); +// get router from userRouter +const userRouter_1 = __importDefault(require("./API/users/userRouter")); +//tells express to use userRouter on the intial route "/API/users" +app.use("/API/users", userRouter_1.default); +app.listen(port, () => { + console.log(`Example app listening on port ${port}`); +}); diff --git a/05-node/05-Routes/example/package-lock.json b/05-node/05-Routes/example/package-lock.json index 8ada15b86..62333989f 100644 --- a/05-node/05-Routes/example/package-lock.json +++ b/05-node/05-Routes/example/package-lock.json @@ -12,6 +12,7 @@ "express": "^4.18.2" }, "devDependencies": { + "@types/express": "^4.17.17", "nodemon": "^3.0.1", "ts-node": "^10.9.1", "typescript": "^5.1.6" @@ -78,12 +79,99 @@ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.36", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz", + "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, "node_modules/@types/node": { "version": "20.5.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, - "peer": true + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } }, "node_modules/abbrev": { "version": "1.1.1", diff --git a/05-node/05-Routes/example/package.json b/05-node/05-Routes/example/package.json index 388af5d5e..f268f9518 100644 --- a/05-node/05-Routes/example/package.json +++ b/05-node/05-Routes/example/package.json @@ -14,6 +14,7 @@ "author": "", "license": "ISC", "devDependencies": { + "@types/express": "^4.17.17", "nodemon": "^3.0.1", "ts-node": "^10.9.1", "typescript": "^5.1.6" diff --git a/05-node/05-Routes/example/public/dist/index.js b/05-node/05-Routes/example/public/dist/index.js index 566c39134..77a0446ef 100644 --- a/05-node/05-Routes/example/public/dist/index.js +++ b/05-node/05-Routes/example/public/dist/index.js @@ -103,7 +103,7 @@ function getproducts() { } function renderProductHTML(product) { try { - var html = "
Price: " + product.price + "
\n \n \nPrice: " + product.price + "
\n \n \n