50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server"
|
|
import { getSessionUser } from "@/lib/auth"
|
|
import { query } from "@/lib/db"
|
|
|
|
export async function PATCH(request: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
|
try {
|
|
const user = await getSessionUser()
|
|
if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 })
|
|
|
|
const { id } = await params
|
|
|
|
const result = await query(
|
|
`UPDATE notifications SET is_read = TRUE WHERE id = $1 AND user_id = $2 RETURNING id`,
|
|
[id, user.id],
|
|
)
|
|
|
|
if (result.rowCount === 0) {
|
|
return NextResponse.json({ error: "Notification not found" }, { status: 404 })
|
|
}
|
|
|
|
return NextResponse.json({ success: true })
|
|
} catch (error) {
|
|
console.error("Notification PATCH error:", error)
|
|
return NextResponse.json({ error: "Failed to mark notification as read" }, { status: 500 })
|
|
}
|
|
}
|
|
|
|
export async function DELETE(request: NextRequest, { params }: { params: Promise<{ id: string }> }) {
|
|
try {
|
|
const user = await getSessionUser()
|
|
if (!user) return NextResponse.json({ error: "Unauthorized" }, { status: 401 })
|
|
|
|
const { id } = await params
|
|
|
|
const result = await query(
|
|
`DELETE FROM notifications WHERE id = $1 AND user_id = $2 RETURNING id`,
|
|
[id, user.id],
|
|
)
|
|
|
|
if (result.rowCount === 0) {
|
|
return NextResponse.json({ error: "Notification not found" }, { status: 404 })
|
|
}
|
|
|
|
return NextResponse.json({ success: true })
|
|
} catch (error) {
|
|
console.error("Notification DELETE error:", error)
|
|
return NextResponse.json({ error: "Failed to dismiss notification" }, { status: 500 })
|
|
}
|
|
}
|