From 655ec610fcce8dd7748f10772d520bdff4f7c78e Mon Sep 17 00:00:00 2001 From: Arne Rief Date: Fri, 19 Dec 2025 20:03:03 +0100 Subject: Basic setup & login --- backend/src/database/postgres.ts | 34 ++++++++++++++++++++++++++++ backend/src/database/redis.ts | 49 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 backend/src/database/postgres.ts create mode 100644 backend/src/database/redis.ts (limited to 'backend/src/database') diff --git a/backend/src/database/postgres.ts b/backend/src/database/postgres.ts new file mode 100644 index 0000000..6f6b682 --- /dev/null +++ b/backend/src/database/postgres.ts @@ -0,0 +1,34 @@ +import { Pool } from "pg"; + +const pool = new Pool({ + user: process.env.DB_USER, + password: process.env.DB_PASSWORD, + database: process.env.DB_DATABASE, + host: process.env.DB_HOST, + port: process.env.DB_PORT ? parseInt(process.env.DB_PORT) : 5432, +}); + +/* Too strict for Docker: +pool.connect((error, _client, release) => { + if (error) { + console.error("Verbindung zur Datenbank fehlgeschlagen: ", error); + process.exit(1); + } else { + console.log("Erfolgreich mit der Datenbank verbunden."); + release(); + } +}); + */ + +console.log("Erfolgreich mit der Datenbank verbunden."); + +export async function closeDBConnection() { + try { + await pool.end(); + console.log("PostgreSQL-Verbindung erfolgreich beendet."); + } catch (error) { + console.error("Fehler beim Beenden der PostgreSQL-Verbindung: ", error); + } +} + +export default pool; diff --git a/backend/src/database/redis.ts b/backend/src/database/redis.ts new file mode 100644 index 0000000..06773b9 --- /dev/null +++ b/backend/src/database/redis.ts @@ -0,0 +1,49 @@ +import { createClient } from "redis"; + +const redisClient = createClient({ + username: process.env.REDIS_USER, + password: process.env.REDIS_PASSWORD, + socket: { + host: process.env.REDIS_HOST, + port: process.env.REDIS_PORT ? parseInt(process.env.REDIS_PORT) : 13080, + reconnectStrategy: (retries) => { + if (retries > 10) { + console.error("Redis Verbindunsversuche erschöpft."); + return new Error( + "Redis Verbindung nach 10 Versuchen Fehlgeschlagen." + ); + } + console.log(`Redis Verbindungsversuch ${retries} von 10`); + return 3000; + }, + }, +}); + +redisClient.on("error", (error) => { + console.error("Redis Fehler: ", error); +}); + +async function connectRedis() { + try { + await redisClient.connect(); + console.log("Erfolgreich mit Redis verbunden."); + } catch (error) { + // Server läuft ohne Cache weiter + console.error("Verbindung zu Redis fehlgeschlagen: ", error); + } +} + +await connectRedis(); + +export async function closeRedisConnection() { + try { + if (redisClient.isOpen) { + await redisClient.quit(); + console.log("Redis-Verbindung erfolgreich beendet."); + } + } catch (error) { + console.error("Fehler beim Beenden der Redis-Verbindung: ", error); + } +} + +export default redisClient; -- cgit v1.2.3