HotTRDealsBackend/routes/upload.routes.js
2026-02-04 06:39:10 +00:00

56 lines
1.5 KiB
JavaScript

const express = require("express")
const { v4: uuidv4 } = require("uuid")
const requireAuth = require("../middleware/requireAuth")
const requireNotRestricted = require("../middleware/requireNotRestricted")
const { upload } = require("../middleware/upload.middleware")
const { uploadImage } = require("../services/uploadImage.service")
const { enqueueAuditFromRequest, buildAuditMeta } = require("../services/audit.service")
const { AUDIT_ACTIONS } = require("../services/auditActions")
const router = express.Router()
router.post(
"/image",
requireAuth,
requireNotRestricted({ checkSuspend: true }),
upload.single("file"),
async (req, res) => {
try {
if (!req.file) return res.status(400).json({ error: "Dosya zorunlu" })
if (!req.file.mimetype?.startsWith("image/")) {
return res.status(400).json({ error: "Sadece resim kabul edilir" })
}
const key = uuidv4()
const ext = req.file.originalname?.split(".").pop() || "jpg"
const path = `misc/${req.auth.userId}/${key}.${ext}`
const url = await uploadImage({
bucket: "deal",
path,
fileBuffer: req.file.buffer,
contentType: req.file.mimetype,
})
enqueueAuditFromRequest(
req,
AUDIT_ACTIONS.MEDIA.UPLOAD,
buildAuditMeta({
entityType: "MEDIA",
entityId: path,
extra: { contentType: req.file.mimetype },
})
)
res.json({ url })
} catch (err) {
console.error(err)
res.status(500).json({ error: "Sunucu hatasi" })
}
}
)
module.exports = router