| import { prisma } from "@/lib/prisma"; |
| import { NextResponse } from "next/server"; |
|
|
| export async function GET() { |
| try { |
| const profiles = await prisma.cv_profile.findMany({ |
| select: { |
| domicile: true, |
| hardskills: true, |
| softskills: true, |
| certifications: true, |
| business_domain: true, |
| univ_edu_1: true, |
| univ_edu_2: true, |
| univ_edu_3: true, |
| major_edu_1: true, |
| major_edu_2: true, |
| major_edu_3: true, |
| }, |
| }); |
|
|
| |
| const unique = (arr: (string | null)[]) => |
| [...new Set(arr.filter(Boolean))].sort() as string[]; |
|
|
| const flatArray = (key: keyof typeof profiles[0]) => |
| unique(profiles.flatMap((p) => p[key] as string[])); |
|
|
| const options = { |
| domicile: unique(profiles.map((p) => p.domicile)), |
| softskills: flatArray("softskills"), |
| hardskills: flatArray("hardskills"), |
| certifications: flatArray("certifications"), |
| business_domain: flatArray("business_domain"), |
| univ_edu: unique([ |
| ...profiles.map((p) => p.univ_edu_1), |
| ...profiles.map((p) => p.univ_edu_2), |
| ...profiles.map((p) => p.univ_edu_3), |
| ]), |
| major_edu: unique([ |
| ...profiles.map((p) => p.major_edu_1), |
| ...profiles.map((p) => p.major_edu_2), |
| ...profiles.map((p) => p.major_edu_3), |
| ]), |
| }; |
|
|
| return NextResponse.json(options); |
| } catch (error) { |
| console.error(error); |
| return NextResponse.json({ error: "Failed to fetch options" }, { status: 500 }); |
| } |
| } |