댓글 시스템 복구
This commit is contained in:
49
backend/src/routes/comments.js
Normal file
49
backend/src/routes/comments.js
Normal file
@@ -0,0 +1,49 @@
|
||||
const express = require('express')
|
||||
const { z } = require('zod')
|
||||
const {
|
||||
listCommentNotifications,
|
||||
countUnreadCommentNotifications,
|
||||
markCommentNotificationsRead,
|
||||
} = require('../db')
|
||||
const { requireAuth } = require('../middleware/auth')
|
||||
|
||||
const router = express.Router()
|
||||
|
||||
router.get('/inbox', requireAuth, async (req, res) => {
|
||||
const schema = z.object({
|
||||
unreadOnly: z
|
||||
.union([z.literal('1'), z.literal('0'), z.literal('true'), z.literal('false')])
|
||||
.optional()
|
||||
.default('0'),
|
||||
})
|
||||
const parsed = schema.safeParse(req.query)
|
||||
if (!parsed.success) return res.status(400).json({ error: 'bad_request' })
|
||||
|
||||
const unreadOnly = ['1', 'true'].includes(parsed.data.unreadOnly)
|
||||
const notifications = await listCommentNotifications(req.session.userId, { unreadOnly })
|
||||
res.json({ notifications })
|
||||
})
|
||||
|
||||
router.get('/inbox/unread-count', requireAuth, async (req, res) => {
|
||||
const unreadCount = await countUnreadCommentNotifications(req.session.userId)
|
||||
res.json({ unreadCount })
|
||||
})
|
||||
|
||||
router.post('/inbox/read', requireAuth, async (req, res) => {
|
||||
const schema = z.object({
|
||||
all: z.boolean().optional().default(false),
|
||||
notificationIds: z.array(z.string().min(1).max(64)).max(100).optional().default([]),
|
||||
})
|
||||
const parsed = schema.safeParse(req.body)
|
||||
if (!parsed.success) return res.status(400).json({ error: 'bad_request' })
|
||||
|
||||
await markCommentNotificationsRead(req.session.userId, {
|
||||
all: parsed.data.all,
|
||||
notificationIds: parsed.data.notificationIds,
|
||||
})
|
||||
|
||||
const unreadCount = await countUnreadCommentNotifications(req.session.userId)
|
||||
res.json({ ok: true, unreadCount })
|
||||
})
|
||||
|
||||
module.exports = router
|
||||
Reference in New Issue
Block a user