55 lines
1.5 KiB
JavaScript
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."}});
|
|
}
|
|
}; |