Add image upload fields, media edit/delete, blog seeds
This commit is contained in:
+31
-2
@@ -2,8 +2,8 @@ import 'dotenv/config'
|
||||
import express from 'express'
|
||||
import cors from 'cors'
|
||||
import multer from 'multer'
|
||||
import { existsSync, mkdirSync } from 'node:fs'
|
||||
import { dirname, extname, join } from 'node:path'
|
||||
import { existsSync, mkdirSync, unlinkSync } from 'node:fs'
|
||||
import { basename, dirname, extname, join } from 'node:path'
|
||||
import { fileURLToPath } from 'node:url'
|
||||
import { randomUUID } from 'node:crypto'
|
||||
import { authMiddleware, loginHandler, meHandler } from './auth.js'
|
||||
@@ -227,6 +227,35 @@ app.post('/api/media/upload', authMiddleware, upload.single('file'), (req, res)
|
||||
res.status(201).json(item)
|
||||
})
|
||||
|
||||
app.put('/api/media/:id', authMiddleware, (req, res) => {
|
||||
const { filename } = req.body || {}
|
||||
if (!filename?.trim()) return res.status(400).json({ error: 'نام فایل الزامی است' })
|
||||
|
||||
let updated = null
|
||||
updateDb((db) => {
|
||||
const i = db.media.findIndex((m) => m.id === req.params.id)
|
||||
if (i === -1) return
|
||||
db.media[i] = { ...db.media[i], filename: filename.trim() }
|
||||
updated = db.media[i]
|
||||
})
|
||||
if (!updated) return res.status(404).json({ error: 'فایل یافت نشد' })
|
||||
res.json(updated)
|
||||
})
|
||||
|
||||
app.delete('/api/media/:id', authMiddleware, (req, res) => {
|
||||
let removed = null
|
||||
updateDb((db) => {
|
||||
const i = db.media.findIndex((m) => m.id === req.params.id)
|
||||
if (i === -1) return
|
||||
removed = db.media.splice(i, 1)[0]
|
||||
})
|
||||
if (!removed) return res.status(404).json({ error: 'فایل یافت نشد' })
|
||||
|
||||
const filePath = join(UPLOADS_DIR, basename(removed.url))
|
||||
if (existsSync(filePath)) unlinkSync(filePath)
|
||||
res.status(204).end()
|
||||
})
|
||||
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Noro CMS API running at http://localhost:${PORT}`)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user