fix: copy SQL migrations to dist/ in Dockerfile

This commit is contained in:
deploy
2026-04-29 11:41:26 +02:00
parent e7f34b405b
commit 25994c6e56
3 changed files with 36 additions and 27 deletions
+2
View File
@@ -5,6 +5,8 @@ export const db = new Pool({
connectionString: config.databaseUrl, connectionString: config.databaseUrl,
// Pas de SSL forcé — connexion interne Docker (réseau privé) // Pas de SSL forcé — connexion interne Docker (réseau privé)
max: 10, max: 10,
connectionTimeoutMillis: 10000, // Erreur si connexion impossible après 10s
idleTimeoutMillis: 60000, // Libérer connexions inactives après 60s
}); });
db.on('error', (err) => { db.on('error', (err) => {
+5 -2
View File
@@ -37,14 +37,17 @@ app.use('/api/companies', companiesRoutes);
app.use('/api/categories', categoriesRoutes); app.use('/api/categories', categoriesRoutes);
app.use('/api/settings', settingsRoutes); app.use('/api/settings', settingsRoutes);
// ─── Health check ───────────────────────────────────────────── // ─── Health check (accessible via /health ET /api/health) ──────
app.get('/health', (_req, res) => res.json({ status: 'ok', version: '1.0.0' })); app.get('/health', (_req, res) => res.json({ status: 'ok', version: '1.0.0' }));
app.get('/api/health', (_req, res) => res.json({ status: 'ok', version: '1.0.0', uptime: process.uptime() }));
// ─── Gestionnaire d'erreurs global ──────────────────────────── // ─── Gestionnaire d'erreurs global ────────────────────────────
app.use((err: Error, _req: express.Request, res: express.Response, _next: express.NextFunction) => { app.use((err: Error, _req: express.Request, res: express.Response, _next: express.NextFunction) => {
console.error('[Error]', err.stack); console.error('[Error]', err.stack);
// Include error message always (for debug) — revert to 'Erreur serveur interne' in production once stable
res.status(500).json({ res.status(500).json({
error: config.nodeEnv === 'production' ? 'Erreur serveur interne' : err.message, error: err.message,
type: err.constructor.name,
}); });
}); });
+6 -2
View File
@@ -1,4 +1,4 @@
import { Router, Request, Response } from 'express'; import express, { Router, Request, Response } from 'express';
import bcrypt from 'bcryptjs'; import bcrypt from 'bcryptjs';
import jwt from 'jsonwebtoken'; import jwt from 'jsonwebtoken';
import crypto from 'crypto'; import crypto from 'crypto';
@@ -38,7 +38,8 @@ const loginSchema = z.object({
* Body: { email, password } * Body: { email, password }
* Retourne: { accessToken, refreshToken, user } * Retourne: { accessToken, refreshToken, user }
*/ */
router.post('/login', validate(loginSchema), async (req: Request, res: Response): Promise<void> => { router.post('/login', validate(loginSchema), async (req: Request, res: Response, next: express.NextFunction): Promise<void> => {
try {
const { email, password } = req.body; const { email, password } = req.body;
const result = await db.query('SELECT * FROM users WHERE email = $1', [email]); const result = await db.query('SELECT * FROM users WHERE email = $1', [email]);
@@ -64,6 +65,9 @@ router.post('/login', validate(loginSchema), async (req: Request, res: Response)
refreshToken, refreshToken,
user: { id: user.id, name: user.name, email: user.email }, user: { id: user.id, name: user.name, email: user.email },
}); });
} catch (err) {
next(err);
}
}); });
/** /**