Update API media endpoints and deploy scripts

This commit is contained in:
Noro Studio
2026-06-30 21:02:21 +03:30
parent b0361594b1
commit dc2b202797
4 changed files with 101 additions and 4 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
PORT=4000
NODE_ENV=production
JWT_SECRET=change-this-to-a-long-random-secret
ADMIN_EMAIL=admin@studionoro.ir
ADMIN_PASSWORD=change-this-strong-password
ADMIN_EMAIL=mohammadbanilohi7@gmail.com
ADMIN_PASSWORD=admin123
API_PUBLIC_URL=https://api.studionoro.ir
CORS_ORIGIN=https://studionoro.ir,https://www.studionoro.ir,https://admin.studionoro.ir
+31 -2
View File
@@ -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'
@@ -234,6 +234,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, '127.0.0.1', () => {
console.log(`Studio Noro API running at http://127.0.0.1:${PORT}`)
})