2025-01-01 17:03:09 -05:00

55 lines
1.5 KiB
JavaScript

import { readFile, writeFile } from "fs/promises";
const fileName = "email_list.txt";
// private helper functions
async function readEmails() {
const str = await readFile(fileName, "utf8");
return JSON.parse(str);
}
async function writeEmails(data) {
await writeFile(fileName, JSON.stringify(data));
}
// public named exports
export async function getEmails(request, response) {
try {
const data = await readEmails();
response.json(data);
} catch (e) {
console.log(e);
response.json({error:{message:"Unable to get emails."}});
}
};
export async function addEmail(request, response) {
try {
const data = await readEmails();
const maxId = data.reduce((prev, current) => (prev.id > current.id) ? prev.id : current.id, 0);
const newEmail = request.body;
newEmail.id = maxId + 1;
data.push(newEmail);
await writeEmails(data);
response.json(newEmail);
} catch (e) {
console.log(e);
response.json({error:{message:"Unable to add email."}});
}
};
export async function deleteEmail(request, response) {
try {
const data = await readEmails();
const id = request.params.id;
const newData = data.filter(e => e.id != id);
await writeEmails(newData);
response.json({});
} catch (e) {
console.log(e);
response.json({error:{message:"Unable to delete email."}});
}
};