841faca34a
- 新增项目规范文档,包含语言设置和 Git 提交规范 - 更新 .gitignore 文件,添加环境文件和数据目录 - 新增 Prettier 配置文件和忽略文件 - 更新 package.json,添加 prettier 和 prisma 相关依赖 - 新增 API 路由处理佣金和消费数据 这些更改为项目提供了更好的结构和代码风格规范。
50 lines
1.9 KiB
TypeScript
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 })
|
|
}
|
|
}
|