summaryrefslogtreecommitdiff
path: root/backend/src/database
diff options
context:
space:
mode:
Diffstat (limited to 'backend/src/database')
-rw-r--r--backend/src/database/postgres.ts34
-rw-r--r--backend/src/database/redis.ts49
2 files changed, 83 insertions, 0 deletions
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;