
import { sessionOptions } from '@/lib/session';
import { withIronSessionApiRoute } from 'iron-session/next';
import type { NextApiRequest, NextApiResponse } from 'next'
import client from "@/lib/mongodb";

const db = client.db(process.env.MONGODB_DB);

export default withIronSessionApiRoute(handler, sessionOptions);

async function handler(req: NextApiRequest, res: NextApiResponse) {
  const { op } = req.query

  if (req.method === 'GET') {
    switch (op) {
      default:
        res.status(400).json({ error: 'Invalid operation!' })
    }
  }
  else if (req.method === 'POST') {
    switch (op) {
        case 'crossRefEmails':
          res.status(200).json(await crossRefEmails(req.body.emails))
          break;
        default:
          res.status(400).json({ error: 'Invalid operation!' })
    }
  } else {
    res.status(400).end(`Method ${req.method} Not Allowed`)
  }
}

async function crossRefEmails(emails: string[]) {
  return await db.collection("users").aggregate([
    {
      $match: {
        email: { $in: emails }
      }
    },
    {
      $project: {
        _id: 0,
        email: 1
      }
    }
  ]).toArray();
}