Advertisement
xConquerPS

Untitled

May 18th, 2025
522
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const fs = require('node:fs');
  2. const http = require('node:http');
  3.  
  4. const userDB = 'users.json';
  5. function getAllUsers() {
  6.   return new Promise((resolve, reject) => {
  7.     const read = fs.createReadStream(userDB);
  8.     let users = [];
  9.  
  10.     read.on('data', (chunk) => { users += chunk; });
  11.  
  12.     read.on('end', () => {
  13.       try {
  14.         return resolve(JSON.parse(users));
  15.       } catch (err) {
  16.         return reject(err);
  17.       }
  18.     });
  19.  
  20.     read.on('error', (err) => { return reject(err); });
  21.   });
  22. }
  23. function updateUsers(users) {
  24.   fs.createWriteStream(userDB).write(JSON.stringify(users));
  25. }
  26.  
  27. function userMgr(request, response, status) {
  28.   switch (status) {
  29.     case 'fetch': {
  30.       return getAllUsers().then((users) => { return response.end(JSON.stringify(users)); });
  31.     }
  32.     case 'create': {
  33.       let userObj = null;
  34.       request.on('data', (chunk) => { userObj = JSON.parse(chunk); });
  35.       request.on('end', () => {
  36.         getAllUsers().then((users) => {
  37.           const userIndex = users.findIndex((user) => { return user.id == userObj.id; });
  38.  
  39.           if (userIndex == -1) {
  40.             users.push(userObj);
  41.             updateUsers(users);
  42.             response.writeHead(201);
  43.             return response.end(JSON.stringify({ message: 'User created successfully.' }));
  44.           } else {
  45.             response.writeHead(409);
  46.             return response.end(JSON.stringify({ message: 'This user already exists.' }));
  47.           }
  48.         });
  49.       });
  50.       break;
  51.     }
  52.     case 'update': {
  53.       let userObj = null;
  54.       request.on('data', (chunk) => { userObj = JSON.parse(chunk); });
  55.  
  56.       request.on('end', () => {
  57.         getAllUsers().then((users) => {
  58.           const userIndex = users.findIndex((user) => { return user.id == userObj.id });
  59.  
  60.           if (userIndex == -1) {
  61.             response.writeHead(409);
  62.             return response.end(JSON.stringify({ message: 'This user is not exists.' }));
  63.           } else {
  64.             users[userIndex] = userObj;
  65.             updateUsers(users);
  66.  
  67.             response.writeHead(201);
  68.             return response.end(JSON.stringify({ message: 'User updated successfully.', }));
  69.           }
  70.         });
  71.       });
  72.       break;
  73.     }
  74.     case 'delete': {
  75.       let userObj = null;
  76.       request.on('data', (chunk) => { userObj = JSON.parse(chunk); });
  77.  
  78.       request.on('end', () => {
  79.         getAllUsers().then((users) => {
  80.           const userIndex = users.findIndex((user) => { return user.id == userObj.id });
  81.  
  82.           if (userIndex == -1) {
  83.             response.writeHead(409);
  84.             return response.end(JSON.stringify({ message: 'This user is not exists.' }));
  85.           } else {
  86.             users = users.filter(user => user.id != userObj.id);
  87.             updateUsers(users);
  88.  
  89.             response.writeHead(201);
  90.             return response.end(JSON.stringify({ message: 'User deleted successfully.', }));
  91.           }
  92.         });
  93.       });
  94.       break;
  95.     }
  96.   }
  97. }
  98.  
  99. const server = http
  100.   .createServer((request, response) => {
  101.     //Request handler..
  102.     console.log(request.method, request.url);
  103.  
  104.     switch (request.method) {
  105.       case 'GET': {
  106.         if (request.url == '/users') return userMgr(request, response, 'fetch');
  107.         break;
  108.       }
  109.       case 'POST': {
  110.         if (request.url == '/users') return userMgr(request, response, 'create');
  111.         break;
  112.       }
  113.       case 'PATCH': {
  114.         if (request.url == '/users') return userMgr(request, response, 'update');
  115.         break;
  116.       }
  117.       case 'DELETE': {
  118.         if (request.url == '/users') return userMgr(request, response, 'delete');
  119.         break;
  120.       }
  121.       default: {
  122.         response.writeHead(404);
  123.         response.write('Invalid request.');
  124.         break;
  125.       }
  126.     }
  127.     response.end();
  128.   })
  129.   .listen(4006);
Advertisement
Comments
  • dutmdh
    5 days
    # text 0.29 KB | 0 0
    1. Leon West Accidental Goblin King Audiobooks 1-4
    2.  
    3. magnet:?xt=urn:btih:49d386821d7a4093ac6209084242fbdf979b0ac1
    4. magnet:?xt=urn:btih:9f49b631081256fdab2d7b13927ce27bd44cf683
    5. magnet:?xt=urn:btih:6ef04c5cd32428d63afbca8a5b754688082059d3
    6. magnet:?xt=urn:btih:feae4390a335f0743bc8852d70183ace64240e1a
Add Comment
Please, Sign In to add comment
Advertisement