Skip to content
Open
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
22 changes: 22 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// filepath: /Users/Jahzara/Documents/CSC424 work/backend api/Backend-Example/app.js
const express = require('express');
const dotenv = require('dotenv');
const connectDB = require('./config/db');
const messageRoutes = require('./routes/messageRoutes');

dotenv.config();
connectDB();

const app = express();

app.use(express.json());
app.use('/api', messageRoutes);

app.get('/', (req, res) => {
res.send('API is running');
});

const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
19 changes: 19 additions & 0 deletions config/db.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const mongoose = require('mongoose');
const dotenv = require('dotenv');

dotenv.config();

const connectDB = async () => {
try {
await mongoose.connect(process.env.MONGODB_URI, {
useNewUrlParser: true,
useUnifiedTopology: true
});
console.log('MongoDB connected');
} catch (err) {
console.error('MongoDB connection error:', err.message);
process.exit(1);
}
};

module.exports = connectDB;
163 changes: 42 additions & 121 deletions controllers/messageController.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,144 +15,65 @@ const sendResponse = (res, statusCode, success, data = null, error = null) => {
return res.status(statusCode).json(response);
};

// POST /api/messages → Create a new message
const createMessage = async (req, res) => {
try {
// For now, return placeholder response
// TODO: Implement database logic

const sampleMessage = {
id: "placeholder-id-123",
author: req.body.author || "Sample Author",
text: req.body.text || "Sample message text",
timestamp: new Date().toISOString(),
isRead: false
};
const Message = require('../models/Message');

sendResponse(res, 201, true, {
message: "Message created successfully",
messageData: sampleMessage
});
} catch (error) {
sendResponse(res, 500, false, null, "Failed to create message");
// Create a new message
exports.createMessage = async (req, res) => {
try {
const { text, author } = req.body;
const message = new Message({ text, author });
await message.save();
res.status(201).json(message);
} catch (err) {
res.status(400).json({ error: err.message });
}
};

// GET /api/messages → Get all messages
const getAllMessages = async (req, res) => {
// Get all messages
exports.getAllMessages = async (req, res) => {
try {
// For now, return placeholder response
// TODO: Implement database logic

const sampleMessages = [
{
id: "msg-001",
author: "John Doe",
text: "Hello, this is the first message!",
timestamp: new Date(Date.now() - 86400000).toISOString(), // 1 day ago
isRead: false
},
{
id: "msg-002",
author: "Jane Smith",
text: "This is another sample message.",
timestamp: new Date(Date.now() - 43200000).toISOString(), // 12 hours ago
isRead: true
},
{
id: "msg-003",
author: "Bob Johnson",
text: "Latest message in the system.",
timestamp: new Date().toISOString(),
isRead: false
}
];

sendResponse(res, 200, true, {
messages: sampleMessages,
count: sampleMessages.length
});
} catch (error) {
sendResponse(res, 500, false, null, "Failed to retrieve messages");
const messages = await Message.find();
res.json(messages);
} catch (err) {
res.status(500).json({ error: err.message });
}
};

// GET /api/messages/:id → Get a specific message by ID
const getMessageById = async (req, res) => {
// Get a message by ID
exports.getMessageById = async (req, res) => {
try {
const { id } = req.params;

// For now, return placeholder response
// TODO: Implement database logic

if (!id) {
return sendResponse(res, 400, false, null, "Message ID is required");
}

const sampleMessage = {
id: id,
author: "Sample Author",
text: `This is a sample message with ID: ${id}`,
timestamp: new Date().toISOString(),
isRead: false
};

sendResponse(res, 200, true, {
message: sampleMessage
});
} catch (error) {
sendResponse(res, 500, false, null, "Failed to retrieve message");
const message = await Message.findById(req.params.id);
if (!message) return res.status(404).json({ error: 'Message not found' });
res.json(message);
} catch (err) {
res.status(500).json({ error: err.message });
}
};

// PUT /api/messages/:id → Update a message by ID
const updateMessage = async (req, res) => {
// Update a message by ID
exports.updateMessage = async (req, res) => {
try {
const { id } = req.params;
const updateData = req.body;

// For now, return placeholder response
// TODO: Implement database logic

if (!id) {
return sendResponse(res, 400, false, null, "Message ID is required");
}

const updatedMessage = {
id: id,
author: updateData.author || "Updated Author",
text: updateData.text || "Updated message text",
timestamp: new Date().toISOString(),
isRead: updateData.isRead !== undefined ? updateData.isRead : false
};

sendResponse(res, 200, true, {
message: "Message updated successfully",
messageData: updatedMessage
});
} catch (error) {
sendResponse(res, 500, false, null, "Failed to update message");
const { text, author } = req.body;
const message = await Message.findByIdAndUpdate(
req.params.id,
{ text, author },
{ new: true }
);
if (!message) return res.status(404).json({ error: 'Message not found' });
res.json(message);
} catch (err) {
res.status(400).json({ error: err.message });
}
};

// DELETE /api/messages/:id → Delete a message by ID
const deleteMessage = async (req, res) => {
// Delete a message by ID
exports.deleteMessage = async (req, res) => {
try {
const { id } = req.params;

// For now, return placeholder response
// TODO: Implement database logic

if (!id) {
return sendResponse(res, 400, false, null, "Message ID is required");
}

sendResponse(res, 200, true, {
message: `Message with ID ${id} deleted successfully`,
deletedId: id
});
} catch (error) {
sendResponse(res, 500, false, null, "Failed to delete message");
const message = await Message.findByIdAndDelete(req.params.id);
if (!message) return res.status(404).json({ error: 'Message not found' });
res.json({ message: 'Message deleted' });
} catch (err) {
res.status(500).json({ error: err.message });
}
};

Expand Down
Loading