const fastify = require('fastify')({ logger: true }); const { PrismaClient } = require('@prisma/client'); require('dotenv').config(); // Création de l'instance Prisma const prisma = new PrismaClient(); // Plugins fastify.register(require('@fastify/cors'), { origin: true, // Autoriser toutes les origines en développement // Ou spécifier correctement les origines autorisées : // origin: ['http://localhost:5173', 'http://127.0.0.1:5173'], methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], allowedHeaders: ['Content-Type', 'Authorization'], credentials: true }); fastify.register(require('./plugins/auth')); fastify.register(require('./plugins/stripe')); fastify.register(require('./plugins/ai')); fastify.register(require('./plugins/google-auth')); // Routes fastify.register(require('./routes/auth'), { prefix: '/auth' }); fastify.register(require('./routes/recipes'), { prefix: '/recipes' }); fastify.register(require('./routes/users'), { prefix: '/users' }); // Hook pour fermer la connexion Prisma à l'arrêt du serveur fastify.addHook('onClose', async (instance, done) => { await prisma.$disconnect(); done(); }); // Décoration pour rendre prisma disponible dans les routes fastify.decorate('prisma', prisma); // Démarrage du serveur const start = async () => { try { await fastify.listen({ port: process.env.PORT || 3000, host: '0.0.0.0' }); } catch (err) { fastify.log.error(err); process.exit(1); } }; start();