// Import necessary modules and setup the Express app const express = require('express'); const fs = require('fs'); const app = express(); const wordsDataPath = './words-app/data/words.json'; const collectionsDataPath = './words-app/data/collections.json'; const PORT = process.env.PORT || 3000; // Endpoint to search for a certain number of words using a query text app.get('/api/words/:query', (req, res) => {   let query = req.params.query;   let count = req.query.count || 10;   count = count > 100 ? 100 : count; // Limit to 100 words per request   let words = fs.readFileSync(wordsDataPath);   words = JSON.parse(words);   let matchingWords = words.filter(word => word.includes(query));   let selectedWords = [];   for (let i = 0; i < count && matchingWords.length > 0; i++) {     let index = Math.floor(Math.random() * matchingWords.length);     selectedWords.push(matchingWords[index]);     matchingWords.splice(index, 1);   }   res.send(selectedWords); }); // Endpoint to read all collections app.get('/api/collections', (req, res) => {   let collections = fs.readFileSync(collectionsDataPath);   collections = JSON.parse(collections);   res.send(collections); }); // Endpoint to create a new collection app.post('/api/collections', (req, res) => {   let collections = fs.readFileSync(collectionsDataPath);   collections = JSON.parse(collections);   let newCollectionName = req.body.name;   collections[newCollectionName] = [];   fs.writeFileSync(collectionsDataPath, JSON.stringify(collections));   res.sendStatus(200); }); // Endpoint to get all words in a collection app.get('/api/collections/:name', (req, res) => {   let collections = fs.readFileSync(collectionsDataPath);   collections = JSON.parse(collections);   let collectionName = req.params.name;   let collection = collections[collectionName];   res.send(collection); }); // Endpoint to delete an empty collection app.delete('/api/collections/:name', (req, res) => {   let collections = fs.readFileSync(collectionsDataPath);   collections = JSON.parse(collections);   let collectionName = req.params.name;   if (collections[collectionName].length === 0) {     delete collections[collectionName];     fs.writeFileSync(collectionsDataPath, JSON.stringify(collections));     res.sendStatus(200);   } else {     res.sendStatus(400);   } }); // Endpoint to add a word to a collection app.post('/api/collections/:name/:word', (req, res) => {   let collections = fs.readFileSync(collectionsDataPath);   collections = JSON.parse(collections);   let collectionName = req.params.name;   let word = req.params.word;   collections[collectionName].push(word);   fs.writeFileSync(collectionsDataPath, JSON.stringify(collections));   res.sendStatus(200); }); // Endpoint to delete a word from a collection app.delete('/api/collections/:name/:word', (req, res) => {   let collections = fs.readFileSync(collectionsDataPath);   collections = JSON.parse(collections);   let collectionName = req.params.name;   let word = req.params.word;   let index = collections[collectionName].indexOf(word);   if (index > -1) {     collections[collectionName].splice(index, 1);     fs.writeFileSync(collectionsDataPath, JSON.stringify(collections)); res.sendStatus(200); } else { res.sendStatus(400); } }); // Start the server app.listen(PORT, () => { console.log(`server listening on port ${PORT}`); });   -please  I need to

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

// Import necessary modules and setup the Express app
const express = require('express');
const fs = require('fs');
const app = express();
const wordsDataPath = './words-app/data/words.json';
const collectionsDataPath = './words-app/data/collections.json';
const PORT = process.env.PORT || 3000;

// Endpoint to search for a certain number of words using a query text
app.get('/api/words/:query', (req, res) => {
  let query = req.params.query;
  let count = req.query.count || 10;
  count = count > 100 ? 100 : count; // Limit to 100 words per request
  let words = fs.readFileSync(wordsDataPath);
  words = JSON.parse(words);
  let matchingWords = words.filter(word => word.includes(query));
  let selectedWords = [];
  for (let i = 0; i < count && matchingWords.length > 0; i++) {
    let index = Math.floor(Math.random() * matchingWords.length);
    selectedWords.push(matchingWords[index]);
    matchingWords.splice(index, 1);
  }
  res.send(selectedWords);
});

// Endpoint to read all collections
app.get('/api/collections', (req, res) => {
  let collections = fs.readFileSync(collectionsDataPath);
  collections = JSON.parse(collections);
  res.send(collections);
});

// Endpoint to create a new collection
app.post('/api/collections', (req, res) => {
  let collections = fs.readFileSync(collectionsDataPath);
  collections = JSON.parse(collections);
  let newCollectionName = req.body.name;
  collections[newCollectionName] = [];
  fs.writeFileSync(collectionsDataPath, JSON.stringify(collections));
  res.sendStatus(200);
});

// Endpoint to get all words in a collection
app.get('/api/collections/:name', (req, res) => {
  let collections = fs.readFileSync(collectionsDataPath);
  collections = JSON.parse(collections);
  let collectionName = req.params.name;
  let collection = collections[collectionName];
  res.send(collection);
});

// Endpoint to delete an empty collection
app.delete('/api/collections/:name', (req, res) => {
  let collections = fs.readFileSync(collectionsDataPath);
  collections = JSON.parse(collections);
  let collectionName = req.params.name;
  if (collections[collectionName].length === 0) {
    delete collections[collectionName];
    fs.writeFileSync(collectionsDataPath, JSON.stringify(collections));
    res.sendStatus(200);
  } else {
    res.sendStatus(400);
  }
});

// Endpoint to add a word to a collection
app.post('/api/collections/:name/:word', (req, res) => {
  let collections = fs.readFileSync(collectionsDataPath);
  collections = JSON.parse(collections);
  let collectionName = req.params.name;
  let word = req.params.word;
  collections[collectionName].push(word);
  fs.writeFileSync(collectionsDataPath, JSON.stringify(collections));
  res.sendStatus(200);
});

// Endpoint to delete a word from a collection
app.delete('/api/collections/:name/:word', (req, res) => {
  let collections = fs.readFileSync(collectionsDataPath);
  collections = JSON.parse(collections);
  let collectionName = req.params.name;
  let word = req.params.word;
  let index = collections[collectionName].indexOf(word);
  if (index > -1) {
    collections[collectionName].splice(index, 1);
    fs.writeFileSync(collectionsDataPath,

JSON.stringify(collections)); res.sendStatus(200); } else { res.sendStatus(400); } });

// Start the server app.listen(PORT, () => { console.log(`server listening on port ${PORT}`);

});

 

-please  I need to 

 

Method URL
GET
GET
POST
GET
Description
Returns an array of words, with size
/api/words/:query&count=:count count, all containing the string passed
in the query URL parameter.
Returns an array of all collections.
POST
DELETE
/api/collections
/api/collections
DELETE /api/collections/:name
/api/collections/:name
/api/collections/:name/:word
/api/collections/:name/:word
Creates a new collection. The name of
the collection is part of the request
body.
Returns an array of all words in the
collection with the provided name.
1 of 2
Deletes an empty collection with the
provided name.
Adds the provided word to the
collection with the provided name.
Deletes the provided word from the
collection with the provided name.
Transcribed Image Text:Method URL GET GET POST GET Description Returns an array of words, with size /api/words/:query&count=:count count, all containing the string passed in the query URL parameter. Returns an array of all collections. POST DELETE /api/collections /api/collections DELETE /api/collections/:name /api/collections/:name /api/collections/:name/:word /api/collections/:name/:word Creates a new collection. The name of the collection is part of the request body. Returns an array of all words in the collection with the provided name. 1 of 2 Deletes an empty collection with the provided name. Adds the provided word to the collection with the provided name. Deletes the provided word from the collection with the provided name.
Expert Solution
steps

Step by step

Solved in 5 steps with 1 images

Blurred answer
Knowledge Booster
Linux
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education