Skip to content
Open

update #5549

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 20 additions & 16 deletions app.js
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
const express = require('express')
const logger = require('morgan')
const cors = require('cors')
const express = require("express");
const logger = require("morgan");
const cors = require("cors");
const contactsRouter = require("./routes/api/contacts");

const contactsRouter = require('./routes/api/contacts')
const app = express();

const app = express()
const formatsLogger = app.get("env") === "development" ? "dev" : "short";

const formatsLogger = app.get('env') === 'development' ? 'dev' : 'short'
app.use(logger(formatsLogger));
app.use(cors());
app.use(express.json());

app.use(logger(formatsLogger))
app.use(cors())
app.use(express.json())

app.use('/api/contacts', contactsRouter)
app.use("/api/contacts", contactsRouter);

app.use((req, res) => {
res.status(404).json({ message: 'Not found' })
})
res.status(404).json({ message: "Not found" });
});

app.use((err, req, res, next) => {
res.status(500).json({ message: err.message })
})
res.status(500).json({ message: err.message });
});

const PORT = process.env.PORT || 4000;
app.listen(PORT, () => {
console.log(`Server running. Use our API on http://localhost:${PORT}`);
});

module.exports = app
module.exports = app;
75 changes: 68 additions & 7 deletions models/contacts.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,80 @@
// const fs = require('fs/promises')
const fs = require("fs/promises");
const path = require("path");

const listContacts = async () => {}
const contactsPath = path.join(__dirname, "contacts.json");

const getContactById = async (contactId) => {}
const listContacts = async () => {
try {
const data = await fs.readFile(contactsPath, "utf8");
return JSON.parse(data);
} catch (error) {
console.error("Error reading contacts:", error);
return [];
}
};

const removeContact = async (contactId) => {}
const getContactById = async (contactId) => {
try {
const contacts = await listContacts();
const contact = contacts.find((c) => c.id === contactId);
return contact || null;
} catch (error) {
console.error("Error finding contact by ID:", error);
return null;
}
};

const addContact = async (body) => {}
const removeContact = async (contactId) => {
try {
const contacts = await listContacts();
const filteredContacts = contacts.filter((c) => c.id !== contactId);
if (contacts.length === filteredContacts.length) {
return null;
}
await fs.writeFile(contactsPath, JSON.stringify(filteredContacts, null, 2));
return contactId;
} catch (error) {
console.error("Error removing contact:", error);
return null;
}
};

const updateContact = async (contactId, body) => {}
const addContact = async (body) => {
try {
const contacts = await listContacts();
const newContact = {
id: String(Date.now()),
...body,
};
contacts.push(newContact);
await fs.writeFile(contactsPath, JSON.stringify(contacts, null, 2));
return newContact;
} catch (error) {
console.error("Error adding contact:", error);
return null;
}
};

const updateContact = async (contactId, body) => {
try {
const contacts = await listContacts();
const index = contacts.findIndex((c) => c.id === contactId);
if (index === -1) {
return null;
}
contacts[index] = { ...contacts[index], ...body };
await fs.writeFile(contactsPath, JSON.stringify(contacts, null, 2));
return contacts[index];
} catch (error) {
console.error("Error updating contact:", error);
return null;
}
};

module.exports = {
listContacts,
getContactById,
removeContact,
addContact,
updateContact,
}
};
Loading