42 lines
1.3 KiB
TypeScript

import { NextRequest } from 'next/server'
import { AppError, ErrorCode } from '@/server/core/errors'
import { handleRequest, jsonError, jsonSuccess } from '@/server/core/response'
import { assetCenterService } from '@/server/services'
import { assetSeriesUpdateSchema } from '../../../platform/schemas'
export async function PUT(
request: NextRequest,
context: { params: Promise<{ id: string }> },
) {
return handleRequest(
request,
async (ctx) => {
const { id } = await context.params
const rawBody = await request.json().catch(() => null)
const parsed = assetSeriesUpdateSchema.safeParse(rawBody)
if (!parsed.success) {
return jsonError(
ErrorCode.VALIDATION_FAILED,
`系列更新参数不正确: ${parsed.error.message}`,
400,
ctx.requestId,
)
}
try {
const series = await assetCenterService.updateSeries(id, {
...parsed.data,
updatedBy: ctx.user.id,
})
return jsonSuccess({ series }, 200, ctx.requestId)
} catch (error) {
if (error instanceof AppError) {
return jsonError(error.code, error.message, error.statusCode, ctx.requestId)
}
throw error
}
},
{ requireAuth: true, requireInternalContentWrite: true },
)
}