Files
keeppay/app/api/reservation/[id]/route.ts
T
root 841faca34a feat: 添加项目规范和配置文件
- 新增项目规范文档,包含语言设置和 Git 提交规范
- 更新 .gitignore 文件,添加环境文件和数据目录
- 新增 Prettier 配置文件和忽略文件
- 更新 package.json,添加 prettier 和 prisma 相关依赖
- 新增 API 路由处理佣金和消费数据

这些更改为项目提供了更好的结构和代码风格规范。
2026-05-12 21:43:25 +08:00

50 lines
1.9 KiB
TypeScript

import { NextResponse } from 'next/server'
import { updateReservation, deleteReservation } from '@/lib/db'
import { CreateReservationSchema } from '@/lib/schemas'
import type { ConsumptionState } from '@/lib/types'
export async function PUT(request: Request, { params }: { params: Promise<{ id: string }> }) {
try {
const { id } = await params
const body = await request.json()
const parsed = CreateReservationSchema.partial().parse(body)
const reservation = await updateReservation(id, parsed)
if (!reservation) {
return NextResponse.json({ error: 'Reservation not found' }, { status: 404 })
}
return NextResponse.json(reservation)
} catch (error) {
console.error('Failed to update reservation:', error)
return NextResponse.json({ error: 'Failed to update reservation' }, { status: 400 })
}
}
export async function PATCH(request: Request, { params }: { params: Promise<{ id: string }> }) {
try {
const { id } = await params
const body = await request.json()
const reservation = await updateReservation(id, { state: body.state as ConsumptionState } as any)
if (!reservation) {
return NextResponse.json({ error: 'Reservation not found' }, { status: 404 })
}
return NextResponse.json(reservation)
} catch (error) {
console.error('Failed to patch reservation:', error)
return NextResponse.json({ error: 'Failed to patch reservation' }, { status: 400 })
}
}
export async function DELETE(request: Request, { params }: { params: Promise<{ id: string }> }) {
try {
const { id } = await params
const ok = await deleteReservation(id)
if (!ok) {
return NextResponse.json({ error: 'Reservation not found' }, { status: 404 })
}
return NextResponse.json({ success: true })
} catch (error) {
console.error('Failed to delete reservation:', error)
return NextResponse.json({ error: 'Failed to delete reservation' }, { status: 500 })
}
}