// server.js
const express = require('express');
const cors = require('cors'); 
const app = express();
const port = 3000;

// Middleware pour gérer les requêtes JSON
app.use(express.json());

// Cors accès à tout
app.use(cors({
  origin: ['http://127.0.0.1:5500', 'http://localhost:5500', 'http://localhost:3000'],
  methods: ['GET', 'POST', 'PUT', 'DELETE'],
  allowedHeaders: ['Content-Type'],
  credentials: true,
}));

// Importer les routes
const apiRoutes = require('./api');
app.use('/api', apiRoutes);

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

// Configuration de Swagger
const swaggerOptions = {
  definition: {
    openapi: '3.0.0',
    info: {
      title: 'API Documentation',
      version: '1.0.0',
      description: 'Documentation de l\'API avec Swagger',
    },
    servers: [
      {
        url: 'https://timelapse.kerboul.me/api',
      },
      {
        url: 'http://localhost:3000/api',
      }
    ],
  },
  apis: ['./routes/*.js'], // Prend en compte tous les fichiers de routes pour générer la documentation
};

// Initialisation de swagger-jsdoc
const swaggerDocs = swaggerJsdoc(swaggerOptions);

// Route Swagger UI
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerDocs));

// Route de base pour tester le serveur
app.get('/', (req, res) => {
  res.setHeader('Access-Control-Allow-Origin', 'http://localhost:5500');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
  res.send('Bienvenue sur mon API Node.js!');
});

// Démarrer le serveur
app.listen(port, () => {
  console.log(`[SERVER] Serveur démarré sur http://localhost:${port}`);
  console.log(`[SERVER] Swagger documentation disponible sur http://localhost:${port}/api-docs`);
});
