Files
mbmanager-api/components/file/fileController.js
T
kavehhn 4fc323cd16 ADD: API_URL to env
ADD: DocumentUrls and mainImageUrls field in belonging model
FIX: Indexing bugs for belonging
ADD: getImage endpoint to get private images
ADD: PrivateUrl field as virtual
FIX: Minor bug in bucketDeleteFile service
ADD: Word type to multer file checker
2025-04-27 16:17:17 +03:30

126 lines
3.1 KiB
JavaScript

const catchAsync = require('../../globalErrorHandler/catchAsync')
const fileService = require('./fileService')
exports.bucketSingleUpload = catchAsync(async (req, res, next) => {
const fileData = await fileService.bucketSingleUpload(req.file, req.params.bucketName)
res.status(200).json({
status: 'success',
data: fileData,
bucketName: req.params.bucketName,
})
})
exports.userUploadOrderDocument = catchAsync(async (req, res, next) => {
const files = await fileService.userUploadOrderDocument(req.files)
res.status(200).json({
status: 'success',
results: files.length,
data: files,
})
})
exports.bucketMultiUpload = catchAsync(async (req, res, next) => {
const files = await fileService.bucketMultiUpload(req.files, req.params.bucketName)
res.status(200).json({
status: 'success',
results: files.length,
data: files,
bucketName: req.params.bucketName,
})
})
exports.bucketGetFiles = catchAsync(async (req, res, next) => {
const files = await fileService.bucketGetFiles()
res.status(200).json({
status: 'success',
results: files.length,
data: files,
})
})
exports.getSignedUrl = catchAsync(async (req, res, next) => {
const url = await fileService.getSignedUrl(req.body.fileName)
res.status(200).json({
status: 'success',
data: url,
})
})
exports.getImage = catchAsync(async (req, res, next) => {
const { bucketName, fileName } = req.params;
const imageData = await fileService.getImage(bucketName, fileName);
if (!imageData) {
return res.status(404).json({
status: 'fail',
message: 'Image not found'
});
}
// Set appropriate headers for the image response
res.set('Content-Type', imageData.contentType);
res.send(imageData.buffer);
});
exports.bucketDeleteFile = catchAsync(async (req, res, next) => {
const { fileName } = await fileService.bucketDeleteFile(req.body, req.params.bucketName)
res.status(200).json({
status: 'success',
data: fileName,
})
})
exports.getAllFiles = catchAsync(async (req, res, next) => {
const files = await fileService.getAllFiles()
res.status(200).json({
status: 'success',
results: files.length,
data: files,
})
})
exports.getFile = catchAsync(async (req, res, next) => {
const file = await fileService.getFile(req.body.id)
res.status(200).json({
status: 'success',
data: file,
})
})
exports.createFile = catchAsync(async (req, res, next) => {
const file = await fileService.createFile(req.body)
res.status(201).json({
status: 'success',
data: file,
})
})
exports.updateFile = catchAsync(async (req, res, next) => {
const file = await fileService.updateFile(req.body)
res.status(200).json({
status: 'success',
data: file,
})
})
exports.deleteFile = catchAsync(async (req, res, next) => {
await fileService.deleteFile(req.body.id)
res.status(204).json({
status: 'success',
data: null,
})
})