Update models.js
const reservationSchema = new mongoose.Schema({
book: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Book',
required: true,
},
member: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Member',
required: true,
},
reservationDate: {
type: Date,
default: Date.now,
},
status: {
type: String,
default: 'pending',
},
});
const Reservation = mongoose.model('Reservation', reservationSchema);
module.exports = { Author, Book ,Member,Loan,Stockbook,Reservation};
// routes.js
const { Author, Book,Member,Loan,Stockbook,Reservation } = require('./models');
// Create a new reservation
router.post('/reservations', async (req, res) => {
try {
const { book, member, reservationDate, status } = req.body;
const reservation = new Reservation({ book, member, reservationDate, status });
const savedReservation = await reservation.save();
res.json(savedReservation);
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Failed to create reservation' });
}
});
// Get all reservations
router.get('/reservations', async (req, res) => {
try {
const reservations = await Reservation.find();
res.json(reservations);
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Failed to retrieve reservations' });
}
});
// Get a reservation by ID
router.get('/reservations/:id', async (req, res) => {
try {
const reservationId = req.params.id;
const reservation = await Reservation.findById(reservationId);
if (!reservation) {
return res.status(404).json({ error: 'Reservation not found' });
}
res.json(reservation);
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Failed to find reservation' });
}
});
// Update a reservation by ID
router.put('/reservations/:id', async (req, res) => {
try {
const reservationId = req.params.id;
const { status } = req.body;
const updatedReservation = await Reservation.findByIdAndUpdate(
reservationId,
{ status },
{ new: true }
);
if (!updatedReservation) {
return res.status(404).json({ error: 'Reservation not found' });
}
res.json(updatedReservation);
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Failed to update reservation' });
}
});
// Delete a reservation by ID
router.delete('/reservations/:id', async (req, res) => {
try {
const reservationId = req.params.id;
const deletedReservation = await Reservation.findByIdAndDelete(reservationId);
if (!deletedReservation) {
return res.status(404).json({ error: 'Reservation not found' });
}
res.json({ message: 'Reservation canceled successfully' });
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Failed to cancel reservation' });
}
});