mirror of
https://github.com/R0m1k3/noteflow.git
synced 2026-10-19 05:09:54 +02:00
Fix: Désactivation parsing Date PostgreSQL pour fix timezone
SOLUTION FINALE du problème de décalage horaire: PROBLÈME IDENTIFIÉ: Avec SQLite: dates stockées comme strings, renvoyées comme strings ✅ Avec PostgreSQL: TIMESTAMPTZ automatiquement parsé en objets Date ❌ Le driver node-postgres (pg) convertit automatiquement les TIMESTAMPTZ en objets JavaScript Date, ce qui causait des problèmes de timezone différents de quand les dates étaient des strings avec SQLite. SOLUTION APPLIQUÉE: 1. config/database.js lignes 6-12: - Import de 'types' depuis pg - types.setTypeParser(1184, ...) - 1184 = OID de TIMESTAMPTZ - Retourne la string ISO au lieu d'un objet Date 2. scripts/test-date-format.js (nouveau): - Script de test pour vérifier format des dates - Insère événement test à 10h Paris - Vérifie comment PostgreSQL stocke et renvoie - Compare avec comportement SQLite - Diagnostic complet COMPORTEMENT MAINTENANT: PostgreSQL stocke: 2025-11-14 09:00:00+00 (UTC) Driver pg renvoie: "2025-11-14T09:00:00Z" (string ISO) Frontend parse: new Date("2025-11-14T09:00:00Z") Frontend affiche: toLocaleTimeString(..., timeZone: 'Europe/Paris') = "10:00" C'est le même comportement qu'avec SQLite! ✅ APRÈS REBUILD: Les dates seront renvoyées comme strings ISO au lieu d'objets Date, exactement comme avec SQLite, et l'affichage sera correct. Plus besoin de: - Migration timezone complexe - Conversion timezone backend - Le frontend gère tout avec timeZone: 'Europe/Paris' Fichiers modifiés: - config/database.js (types.setTypeParser) - scripts/test-date-format.js (nouveau, diagnostic)
This commit is contained in:
2 files changed
+153
-1
No files matched your search
+9
-1
@@ -1,8 +1,16 @@
|
||||
// Configuration et initialisation de la base de données PostgreSQL
|
||||
const { Pool } = require('pg');
|
||||
const { Pool, types } = require('pg');
|
||||
const bcrypt = require('bcrypt');
|
||||
const logger = require('./logger');
|
||||
|
||||
// IMPORTANT: Désactiver le parsing automatique des TIMESTAMPTZ en objets Date
|
||||
// Pour éviter les problèmes de timezone, on renvoie les dates comme strings ISO
|
||||
types.setTypeParser(1184, function(stringValue) {
|
||||
// 1184 = TIMESTAMPTZ
|
||||
// Renvoyer la string ISO au lieu d'un objet Date
|
||||
return stringValue;
|
||||
});
|
||||
|
||||
// Configuration PostgreSQL depuis DATABASE_URL ou variables d'environnement
|
||||
const DATABASE_URL = process.env.DATABASE_URL ||
|
||||
`postgresql://${process.env.PGUSER || 'noteflow'}:${process.env.PGPASSWORD || 'noteflow_secure_password_change_me'}@${process.env.PGHOST || 'localhost'}:${process.env.PGPORT || '5499'}/${process.env.PGDATABASE || 'noteflow'}`;
|
||||
|
||||
Reference in new issue
Block a user