45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
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(); |