Install Multer
npm install multer
মডেল বানাই
models/document.js
const { DataTypes } = require('sequelize');
const sequelize = require('../config/db');
const Document = sequelize.define('Document', {
title: {
type: DataTypes.STRING,
allowNull: false,
},
file_path: {
type: DataTypes.STRING,
allowNull: false,
},
});
module.exports = Document;
Controllers বানাই
controllers/documentController.js
const fs = require('fs');
const multer = require('multer');
const Document = require('../models/document');
// Multer configuration
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'src/uploads/'); // Destination folder for uploaded files
},
filename: (req, file, cb) => {
cb(null, Date.now() + '-' + file.originalname); // File name in the destination folder
},
});
const upload = multer({ storage: storage });
// Get all documents
exports.getAllDocuments = async (req, res) => {
try {
const documents = await Document.findAll();
res.json(documents);
} catch (error) {
res.status(500).json({ error: error.message });
}
};
// Create a new document with file upload
exports.createDocument = upload.single('file'), async (req, res) => {
try {
const { title } = req.body;
const file = req.file;
if (!file) {
return res.status(400).json({ error: 'File is required' });
}
const document = await Document.create({ title, filePath: file.path });
res.json({ document, message: 'Document created successfully' });
} catch (error) {
res.status(500).json({ error: error.message });
}
};
// Update a document
exports.updateDocument = async (req, res) => {
try {
const { id } = req.params;
const { title } = req.body;
const document = await Document.findByPk(id);
if (!document) {
return res.status(404).json({ message: 'Document not found' });
}
document.title = title;
await document.save();
res.json({ document, message: 'Document updated successfully' });
} catch (error) {
res.status(500).json({ error: error.message });
}
};
// Delete a document
exports.deleteDocument = async (req, res) => {
try {
const { id } = req.params;
const document = await Document.findByPk(id);
if (!document) {
return res.status(404).json({ message: 'Document not found' });
}
// Remove the file from the uploads folder
fs.unlinkSync(document.filePath);
await document.destroy();
res.json({ message: 'Document deleted successfully' });
} catch (error) {
res.status(500).json({ error: error.message });
}
};
Route
routes/documentRoutes.js
const express = require('express');
const documentController = require('../controllers/documentController');
const { authenticateJWT } = require('../middleware/authMiddleware');
const router = express.Router();
// Use the authentication middleware for all document routes
router.use(authenticateJWT);
router.get('/', documentController.getAllDocuments);
router.post('/', documentController.createDocument);
router.put('/:id', documentController.updateDocument);
router.delete('/:id', documentController.deleteDocument);
module.exports = router;
index.js
const documentRoutes = require('./routes/documentRoutes');
app.use('/api/documents', documentRoutes);