21 lines
1.2 KiB
TypeScript
21 lines
1.2 KiB
TypeScript
import { NextRequest } from 'next/server'
|
|
import { handleRequest, jsonError, jsonSuccess } from '@/server/core/response'
|
|
import { ErrorCode } from '@/server/core/errors'
|
|
import { createDiyLayoutReplace } from '@/server/services/diy-layout-replace.service'
|
|
import { diyAiRenderService } from '@/server/services/diy-ai-render.service'
|
|
|
|
export const maxDuration = 300
|
|
export async function GET(request: NextRequest) {
|
|
return handleRequest(request, async ctx => jsonSuccess(await diyAiRenderService.findForRequest(request.nextUrl.searchParams.get('requestId') || '', ctx.user), 200, ctx.requestId), { requireAuth: true })
|
|
}
|
|
export async function POST(request: NextRequest) {
|
|
return handleRequest(request, async ctx => {
|
|
const text = await request.text()
|
|
if (Buffer.byteLength(text) > 12_000) return jsonError(ErrorCode.FILE_TOO_LARGE, '排版参数过大', 413, ctx.requestId)
|
|
let input: unknown
|
|
try { input = JSON.parse(text) } catch { return jsonError(ErrorCode.VALIDATION_FAILED, '排版参数格式无效', 422, ctx.requestId) }
|
|
const record = await createDiyLayoutReplace(input, ctx.user)
|
|
return jsonSuccess(record, record.status === 'PENDING' ? 202 : 200, ctx.requestId)
|
|
}, { requireAuth: true })
|
|
}
|