/* eslint-disable no-restricted-syntax */ import { NextRequest, NextResponse } from "next/server"; import { Client } from "@opensearch-project/opensearch"; import { v4 as uuid } from "uuid"; import taxonomy from "app/_config/taxonomy.json"; import unRegions from "app/_config/unRegions.json"; export const POST = async (req: NextRequest) => { const { tickets } = await req.json(); const authorization = req.headers.get("authorization"); const baseURL = `https://${process.env.OPENSEARCH_URL}`; const client = new Client({ node: baseURL, ssl: { rejectUnauthorized: false, }, headers: { authorization, }, }); const succeeded = []; const failed = []; for await (const ticket of tickets) { const { id } = ticket; try { const country = ticket.country[0] ?? "none"; // @ts-expect-error const translatedCountry = taxonomy.country[country]?.display ?? "none"; const countryDetails: any = unRegions.find( (c) => c.name === translatedCountry, ); const augmentedTicket = { ...ticket, region: countryDetails["sub-region"]?.toLowerCase().replace(" ", "-") ?? null, continent: countryDetails.region?.toLowerCase().replace(" ", "-") ?? null, }; const out = await client.create({ id: uuid(), index: "sample_tagged_tickets", refresh: true, body: augmentedTicket, }); succeeded.push(id); } catch (e) { console.error(e); failed.push(id); } } const results = { succeeded, failed }; return NextResponse.json(results); };