import { Request, Response, NextFunction } from 'express';

declare global {
  // eslint-disable-next-line @typescript-eslint/no-namespace
  namespace Express {
    interface Locals {
      // When the query params contains...
      //
      //   relations=items,subitems
      //
      // ... it becomes available as follow in handlers:
      //
      //   ['items', 'subitems']
      relations: string[];
    }
  }
}

function extractRelations(req: Request, res: Response, next: NextFunction) {
  const rawRelations = req.query.relations;

  res.locals.relations = typeof rawRelations === 'string' ? rawRelations.split(',') : [];

  next();
}

export default extractRelations;
