42 lines
1.3 KiB
TypeScript
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 },
|
|
)
|
|
}
|