Executive Summary
When users delete notes, they're immediately and permanently removed. No trash folder or recovery window exists. Accidental deletions cannot be undone.
Proposed Solution
// Schema: soft delete with recovery period
const NoteSchema = new Schema({
userId: String,
title: String,
content: String,
createdAt: Date,
updatedAt: Date,
deletedAt: Date, // null if not deleted
isDeleted: Boolean, // soft delete flag
});
// Delete endpoint: soft delete
app.delete('/api/notes/:id', authenticateUser, async (req, res) => {
const note = await Note.findOne({ _id: req.params.id, userId: req.user.id });
if (!note) return res.status(404).json({ error: 'Note not found' });
note.isDeleted = true;
note.deletedAt = new Date();
await note.save();
res.json({ message: 'Note deleted. Recover within 30 days.' });
});
// Get notes: exclude soft-deleted
app.get('/api/notes', authenticateUser, async (req, res) => {
const notes = await Note.find({
userId: req.user.id,
isDeleted: false,
});
res.json(notes);
});
// Trash/recovery endpoint
app.get('/api/notes/trash', authenticateUser, async (req, res) => {
const trash = await Note.find({
userId: req.user.id,
isDeleted: true,
deletedAt: { $gt: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000) }, // Last 30 days
});
res.json(trash);
});
// Restore endpoint
app.post('/api/notes/:id/restore', authenticateUser, async (req, res) => {
const note = await Note.findOne({ _id: req.params.id, userId: req.user.id });
if (!note || !note.isDeleted) {
return res.status(400).json({ error: 'Cannot restore' });
}
note.isDeleted = false;
note.deletedAt = null;
await note.save();
res.json({ message: 'Note restored', note });
});
// Cleanup job: permanently delete after 30 days
setInterval(async () => {
const thirtyDaysAgo = new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);
await Note.deleteMany({
isDeleted: true,
deletedAt: { $lt: thirtyDaysAgo },
});
}, 24 * 60 * 60 * 1000); // Daily cleanup
Checklist
@HarshYadav152 Could you please /assign this issue to me? I would like to implement soft-delete with recovery window under NSOC '26.
/assign
Executive Summary
When users delete notes, they're immediately and permanently removed. No trash folder or recovery window exists. Accidental deletions cannot be undone.
Proposed Solution
Checklist
@HarshYadav152 Could you please /assign this issue to me? I would like to implement soft-delete with recovery window under NSOC '26.
/assign