From e7c558715e329d6eca58e719e8027996c29a6a22 Mon Sep 17 00:00:00 2001 From: Shadi Date: Tue, 10 Mar 2026 14:56:59 +0100 Subject: [PATCH 1/7] implement bash script for create user --- task-1/post.sh | 5 +++++ task-1/server/users.json | 11 +++++++++++ 2 files changed, 16 insertions(+) create mode 100644 task-1/post.sh diff --git a/task-1/post.sh b/task-1/post.sh new file mode 100644 index 0000000..211ff5e --- /dev/null +++ b/task-1/post.sh @@ -0,0 +1,5 @@ + +curl -X POST http://localhost:3000/users \ + -H "Content-Type: application/json " \ + -d '{"name": "John Doe", "email":"john.doe@example.com" , "password": "secret123" , + "role": "user" , "active" : true , "department" : "Engineering"}' \ No newline at end of file diff --git a/task-1/server/users.json b/task-1/server/users.json index fc8d197..d5e1e77 100644 --- a/task-1/server/users.json +++ b/task-1/server/users.json @@ -109,6 +109,17 @@ "createdAt": "2024-09-14T12:30:00Z", "lastLogin": "2026-02-03T13:00:00Z", "department": "Engineering" + }, + { + "id": 11, + "name": "John Doe", + "email": "john.doe@example.com", + "password": "$2b$10$1Tcdeqw8FN8DltArXhfAfeXQH6GoHtq5LMzZkGe1fAoSdf5C.E6uq", + "role": "user", + "active": true, + "createdAt": "2026-03-10T13:54:40.102Z", + "lastLogin": null, + "department": "Engineering" } ] } \ No newline at end of file From 2572b857ad5df3f4eeeb082c3d36926bb8947f11 Mon Sep 17 00:00:00 2001 From: Shadi Date: Tue, 10 Mar 2026 15:05:30 +0100 Subject: [PATCH 2/7] implement bash script for partial update user info --- task-1/patch.sh | 4 ++++ task-1/server/users.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 task-1/patch.sh diff --git a/task-1/patch.sh b/task-1/patch.sh new file mode 100644 index 0000000..8909f80 --- /dev/null +++ b/task-1/patch.sh @@ -0,0 +1,4 @@ + +curl -X PATCH http://localhost:3000/users/11 \ +-H "Content-Type: application/json " \ +-d '{"email" : "johndoe@example.com"}' \ No newline at end of file diff --git a/task-1/server/users.json b/task-1/server/users.json index d5e1e77..de3c8d6 100644 --- a/task-1/server/users.json +++ b/task-1/server/users.json @@ -113,7 +113,7 @@ { "id": 11, "name": "John Doe", - "email": "john.doe@example.com", + "email": "johndoe@example.com", "password": "$2b$10$1Tcdeqw8FN8DltArXhfAfeXQH6GoHtq5LMzZkGe1fAoSdf5C.E6uq", "role": "user", "active": true, From 046bd4a19aca794545a5df48e93a4300153ea028 Mon Sep 17 00:00:00 2001 From: Shadi Date: Tue, 10 Mar 2026 15:14:45 +0100 Subject: [PATCH 3/7] implament bash script for getting single user info --- task-1/get.sh | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 task-1/get.sh diff --git a/task-1/get.sh b/task-1/get.sh new file mode 100644 index 0000000..e46ff3f --- /dev/null +++ b/task-1/get.sh @@ -0,0 +1,2 @@ +curl -X GET http://localhost:3000/users/11 \ +-H "Content-Type: application/json " \ No newline at end of file From 4a7c31353d6881c6fa68bbd07ecfdc6d5ba78081 Mon Sep 17 00:00:00 2001 From: Shadi Date: Tue, 10 Mar 2026 15:16:22 +0100 Subject: [PATCH 4/7] implemet script bash for delet user --- task-1/delete.sh | 1 + task-1/server/users.json | 11 ----------- 2 files changed, 1 insertion(+), 11 deletions(-) create mode 100644 task-1/delete.sh diff --git a/task-1/delete.sh b/task-1/delete.sh new file mode 100644 index 0000000..4b8d7af --- /dev/null +++ b/task-1/delete.sh @@ -0,0 +1 @@ +curl -X DELETE http://localhost:3000/users/11 \ No newline at end of file diff --git a/task-1/server/users.json b/task-1/server/users.json index de3c8d6..fc8d197 100644 --- a/task-1/server/users.json +++ b/task-1/server/users.json @@ -109,17 +109,6 @@ "createdAt": "2024-09-14T12:30:00Z", "lastLogin": "2026-02-03T13:00:00Z", "department": "Engineering" - }, - { - "id": 11, - "name": "John Doe", - "email": "johndoe@example.com", - "password": "$2b$10$1Tcdeqw8FN8DltArXhfAfeXQH6GoHtq5LMzZkGe1fAoSdf5C.E6uq", - "role": "user", - "active": true, - "createdAt": "2026-03-10T13:54:40.102Z", - "lastLogin": null, - "department": "Engineering" } ] } \ No newline at end of file From d11d0f90a2301d48e2df10338b8ef2e1fa13c838 Mon Sep 17 00:00:00 2001 From: Shadi Date: Tue, 10 Mar 2026 17:12:56 +0100 Subject: [PATCH 5/7] implemnt fetching nobel prize list from api --- task-2/services.js | 23 ++++++++++++++++++++--- task-2/ui.js | 1 + 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/task-2/services.js b/task-2/services.js index 2126969..8974b17 100644 --- a/task-2/services.js +++ b/task-2/services.js @@ -1,8 +1,8 @@ // Nobel Prize API Documentation: https://www.nobelprize.org/about/developer-zone-2/ -import { fetchData } from './fetcher.js'; +import { fetchData } from "./fetcher.js"; -const API_BASE_URL = 'https://api.nobelprize.org/2.1'; +const API_BASE_URL = "https://api.nobelprize.org/2.1"; /** * Fetch Nobel Prizes with optional filters @@ -11,11 +11,28 @@ const API_BASE_URL = 'https://api.nobelprize.org/2.1'; * @param {string} filters.category - Category code to filter by (optional) * @param {number} filters.offset - Pagination offset (default: 0) * @param {number} filters.limit - Number of results per page (default: 10) + * @param {string} filters.sort - The sort order (result is sorted by year) * @param {Function} onSuccess - Callback for successful fetch * @param {Function} onError - Callback for fetch errors */ export function fetchNobelPrizes(filters = {}, onSuccess, onError) { - let url = ''; // TODO Construct the full URL with query parameters; + let url = API_BASE_URL + "/nobelPrizes?"; + const params = new URLSearchParams(); + if (filters.category != "all") { + params.append("nobelPrizeCategory", filters.category); + } + + if (filters.year != "all") { + params.append("nobelPrizeYear", filters.year); + } + params.append("sort", "desc"); + if (filters.sort) { + params.append("sort", filters.sort); + } + params.append("offset", filters.offset); + params.append("limit", filters.limit); + + url = url + params.toString(); fetchData(url, onSuccess, onError); } diff --git a/task-2/ui.js b/task-2/ui.js index 1981a10..2551049 100644 --- a/task-2/ui.js +++ b/task-2/ui.js @@ -125,6 +125,7 @@ export default class UI { category: category, offset: offset, limit: this.state.itemsPerPage, + sort : 'desc', }, (data) => { // Update state with results From f85690acc896ded205f2fb8cbc87b2ecb3676473 Mon Sep 17 00:00:00 2001 From: Shadi Date: Tue, 10 Mar 2026 17:14:49 +0100 Subject: [PATCH 6/7] fix package lock.jason --- package-lock.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 020596f..837218f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "core-assignment-week-10", + "name": "core-assignment-week-9", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "core-assignment-week-10", + "name": "core-assignment-week-9", "version": "1.0.0", "license": "ISC", "dependencies": { From af2cf78ee20aa1c264869bdb06543f7706230fd0 Mon Sep 17 00:00:00 2001 From: Shadi Date: Wed, 25 Mar 2026 19:32:52 +0100 Subject: [PATCH 7/7] refactor fetchNobelPrizes function to use destructured parameters for improved readability --- task-2/services.js | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/task-2/services.js b/task-2/services.js index 8974b17..125d0d6 100644 --- a/task-2/services.js +++ b/task-2/services.js @@ -15,24 +15,26 @@ const API_BASE_URL = "https://api.nobelprize.org/2.1"; * @param {Function} onSuccess - Callback for successful fetch * @param {Function} onError - Callback for fetch errors */ -export function fetchNobelPrizes(filters = {}, onSuccess, onError) { - let url = API_BASE_URL + "/nobelPrizes?"; +export function fetchNobelPrizes( + { + category = "all", + year = "all", + offset = 0, + limit = 10, + sort = "desc", + } = {}, + onSuccess, + onError +) { const params = new URLSearchParams(); - if (filters.category != "all") { - params.append("nobelPrizeCategory", filters.category); - } + if (category !== "all") params.append("nobelPrizeCategory", category); + if (year !== "all") params.append("nobelPrizeYear", year); - if (filters.year != "all") { - params.append("nobelPrizeYear", filters.year); - } - params.append("sort", "desc"); - if (filters.sort) { - params.append("sort", filters.sort); - } - params.append("offset", filters.offset); - params.append("limit", filters.limit); + params.append("sort", sort); + params.append("offset", offset); + params.append("limit", limit); - url = url + params.toString(); + const url = `${API_BASE_URL}/nobelPrizes?${params.toString()}`; fetchData(url, onSuccess, onError); }