From 337fd3ce96cba39d47f3a30d5c7db16214cd45af Mon Sep 17 00:00:00 2001 From: Remi R Date: Wed, 15 Nov 2023 11:20:49 +0100 Subject: [PATCH] feat: searching for one ingredient in local db is working, searching for all ingredient in local db is working --- API-Project/package-lock.json | 125 +++++++++++++----- API-Project/package.json | 4 +- .../src/controllers/ingredients.controller.ts | 22 ++- API-Project/src/database/connection.ts | 2 +- 4 files changed, 110 insertions(+), 43 deletions(-) diff --git a/API-Project/package-lock.json b/API-Project/package-lock.json index 5367fb0..4168255 100644 --- a/API-Project/package-lock.json +++ b/API-Project/package-lock.json @@ -15,10 +15,12 @@ "morgan": "^1.10.0", "nodemon": "^3.0.1", "pg": "^8.11.3", - "pg-promise": "^11.5.4", "ts-node": "^10.9.1", "tsup": "^7.2.0", "typescript": "^5.2.2" + }, + "devDependencies": { + "@types/pg": "^8.10.9" } }, "node_modules/@cspotcode/source-map-support": { @@ -522,6 +524,74 @@ "undici-types": "~5.26.4" } }, + "node_modules/@types/pg": { + "version": "8.10.9", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.10.9.tgz", + "integrity": "sha512-UksbANNE/f8w0wOMxVKKIrLCbEMV+oM1uKejmwXr39olg4xqcfBDbXxObJAt6XxHbDa4XTKOlUEcEltXDX+XLQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^4.0.1" + } + }, + "node_modules/@types/pg/node_modules/pg-types": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.1.tgz", + "integrity": "sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==", + "dev": true, + "dependencies": { + "pg-int8": "1.0.1", + "pg-numeric": "1.0.2", + "postgres-array": "~3.0.1", + "postgres-bytea": "~3.0.0", + "postgres-date": "~2.0.1", + "postgres-interval": "^3.0.0", + "postgres-range": "^1.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@types/pg/node_modules/postgres-array": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz", + "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@types/pg/node_modules/postgres-bytea": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "dev": true, + "dependencies": { + "obuf": "~1.1.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/pg/node_modules/postgres-date": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.0.1.tgz", + "integrity": "sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@types/pg/node_modules/postgres-interval": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", + "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/@types/qs": { "version": "6.9.10", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", @@ -622,14 +692,6 @@ "node": ">=8" } }, - "node_modules/assert-options": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/assert-options/-/assert-options-0.8.1.tgz", - "integrity": "sha512-5lNGRB5g5i2bGIzb+J1QQE1iKU/WEMVBReFIc5pPDWjcPj23otPL0eI6PB2v7QPi0qU6Mhym5D3y0ZiSIOf3GA==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1660,6 +1722,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -1790,12 +1858,13 @@ "node": ">=4.0.0" } }, - "node_modules/pg-minify": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/pg-minify/-/pg-minify-1.6.3.tgz", - "integrity": "sha512-NoSsPqXxbkD8RIe+peQCqiea4QzXgosdTKY8p7PsbbGsh2F8TifDj/vJxfuR8qJwNYrijdSs7uf0tAe6WOyCsQ==", + "node_modules/pg-numeric": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", + "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", + "dev": true, "engines": { - "node": ">=12.0.0" + "node": ">=4" } }, "node_modules/pg-pool": { @@ -1806,20 +1875,6 @@ "pg": ">=8.0" } }, - "node_modules/pg-promise": { - "version": "11.5.4", - "resolved": "https://registry.npmjs.org/pg-promise/-/pg-promise-11.5.4.tgz", - "integrity": "sha512-esYSkDt2h6NQOkfotGAm1Ld5OjoITJLpB88Z1PIlcAU/RQ0XQE2PxW0bLJEOMHPGV5iaRnj1Y7ARznXbgN4FNw==", - "dependencies": { - "assert-options": "0.8.1", - "pg": "8.11.3", - "pg-minify": "1.6.3", - "spex": "3.3.0" - }, - "engines": { - "node": ">=14.0" - } - }, "node_modules/pg-protocol": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", @@ -1930,6 +1985,12 @@ "node": ">=0.10.0" } }, + "node_modules/postgres-range": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.3.tgz", + "integrity": "sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==", + "dev": true + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -2241,14 +2302,6 @@ "node": ">= 8" } }, - "node_modules/spex": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/spex/-/spex-3.3.0.tgz", - "integrity": "sha512-VNiXjFp6R4ldPbVRYbpxlD35yRHceecVXlct1J4/X80KuuPnW2AXMq3sGwhnJOhKkUsOxAT6nRGfGE5pocVw5w==", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/split2": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", diff --git a/API-Project/package.json b/API-Project/package.json index cdb41d9..cf98969 100644 --- a/API-Project/package.json +++ b/API-Project/package.json @@ -17,9 +17,11 @@ "morgan": "^1.10.0", "nodemon": "^3.0.1", "pg": "^8.11.3", - "pg-promise": "^11.5.4", "ts-node": "^10.9.1", "tsup": "^7.2.0", "typescript": "^5.2.2" + }, + "devDependencies": { + "@types/pg": "^8.10.9" } } diff --git a/API-Project/src/controllers/ingredients.controller.ts b/API-Project/src/controllers/ingredients.controller.ts index 91c81b6..12d2dab 100644 --- a/API-Project/src/controllers/ingredients.controller.ts +++ b/API-Project/src/controllers/ingredients.controller.ts @@ -3,19 +3,20 @@ import { Router } from "express"; import { Exceptions } from "../utils/exception"; import { IIngredient } from "../types/ingredients"; import { pool } from "../database/connection"; -import { queryResult } from "pg-promise"; +import { QueryResult } from "pg"; const IngredientsController = Router() /** To get all ingredients */ IngredientsController.get('/', (req, res) => { - pool.query('SELECT * FROM Ingredients ORDER BY id', (error: Error, results: queryResult) => { + pool.query({text:'SELECT * FROM Ingredients ORDER BY id'}, (error: Error, results: QueryResult) => { if (error) { throw(error) } + res.status(200); - res.send("Liste des ingredients").json(results); + res.json(results.rows); }) return res; @@ -29,8 +30,19 @@ IngredientsController.get('/:id', (req, res) => { throw new Exceptions.BadRequestException('id invalid !'); } - res.send(`Searching for ingredient with id = ${id}...`); - res.status(200); + pool.query({text:'SELECT * FROM Ingredients WHERE id =$1', + values: [id]}, (error: Error, results: QueryResult) => { + if (error) { + throw(error) + } + + if (results.rowCount == 0) { + throw new Exceptions.NotFoundException('no ingredient with this id'); + } + + res.status(200) + res.json(results.rows) + }) return res; }) diff --git a/API-Project/src/database/connection.ts b/API-Project/src/database/connection.ts index 5f5795e..23bc6cf 100644 --- a/API-Project/src/database/connection.ts +++ b/API-Project/src/database/connection.ts @@ -3,6 +3,6 @@ export const pool = new Pool({ user: 'rgregnault', host: 'localhost', database: 'leftovers', - password: 'Cl@ssicP@ssw0rd', + password: 'motdepasse', port: 5432, }) \ No newline at end of file