2026-05-28 15:11:36 +08:00

45 lines
1.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { NextResponse } from 'next/server'
import { getServerSession } from 'next-auth'
import { authOptions } from '@/lib/auth'
import { formatFieldOptionValues, getFieldPoolRecords } from '@/lib/field-pool'
type FieldPoolRecord = {
key: string
label: string
filterDisplayName?: string | null
options: Array<{ value: string }>
isFilterEnabled?: boolean
filterOrder?: number | null
}
export async function GET(request: Request) {
try {
const session = await getServerSession(authOptions)
if (!session?.user) {
return NextResponse.json({ error: '请先登录' }, { status: 401 })
}
const fields = (await getFieldPoolRecords()) as FieldPoolRecord[]
// 检查是否需要返回所有字段(用于上传表单)
const url = new URL(request.url)
const includeAll = url.searchParams.get('includeAll') === 'true'
// 如果 includeAll=true,返回所有字段;否则只返回 isFilterEnabled 的字段
const filteredFields = includeAll ? fields : fields.filter((field) => field.isFilterEnabled)
const payload = filteredFields.map((field: FieldPoolRecord) => ({
fieldKey: field.key,
fieldLabel: field.filterDisplayName || field.label,
fieldDefaultLabel: field.label,
filterOrder: field.filterOrder ?? 0,
options: formatFieldOptionValues(field.options),
}))
return NextResponse.json(payload)
} catch (error) {
console.error('Error fetching template categories:', error)
return NextResponse.json({ error: '获取模板分类失败' }, { status: 500 })
}
}