HotTRDealsBackend/routes/upload.routes.js
2026-02-09 21:47:55 +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 { makeWebp } = require("../utils/processImage")
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 webpBuffer = await makeWebp(req.file.buffer, { quality: 40 })
const path = `images/dealDescription/${key}.webp`
const url = await uploadImage({
path,
fileBuffer: webpBuffer,
contentType: "image/webp",
})
enqueueAuditFromRequest(
req,
AUDIT_ACTIONS.MEDIA.UPLOAD,
buildAuditMeta({
entityType: "MEDIA",
entityId: path,
extra: { contentType: "image/webp" },
})
)
res.json({ url })
} catch (err) {
console.error(err)
res.status(500).json({ error: "Sunucu hatasi" })
}
}
)
module.exports = router