const swaggerJsdoc = require('swagger-jsdoc');
const swaggerUi = require('swagger-ui-express');

const options = {
  definition: {
    openapi: '3.0.0',
    servers: [
      {
        url: 'https://api.2weekmail.test',
        description: 'Test Environment',
      },
      {
        url: 'https://api.2weekmail.fyi',
        description: 'Production Environment',
      },
    ],
    info: {
      title: 'Temporary Email API',
      version: '1.0.0',
      description: 'API documentation for the temporary email service',
    },
    components: {
      securitySchemes: {
        bearerAuth: {
          type: 'http',
          scheme: 'bearer',
          bearerFormat: 'JWT',
        },
      },
    },
  },
  apis: ['./controllers/*.js'], // Path to the API docs
};

const specs = swaggerJsdoc(options);

module.exports = (app) => {
  console.log('Setting up Swagger UI...');
  console.log('Swagger spec generated successfully');
  app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs));
  console.log('Swagger UI setup complete');
};