Merge pull request #58 from killion/wrap-redis-and-postgres-in-a-try-catch

Wrap Prisma and IORedis in a try/catch with logging
This commit is contained in:
Dries Augustyns
2024-08-18 09:23:53 +02:00
committed by GitHub
4 changed files with 65 additions and 38 deletions
+38 -36
View File
@@ -1,38 +1,40 @@
{ {
"name": "plunk", "name": "plunk",
"version": "1.0.2", "version": "1.0.3",
"private": true, "private": true,
"license": "agpl-3.0", "license": "agpl-3.0",
"workspaces": { "workspaces": {
"packages": ["packages/*"] "packages": [
}, "packages/*"
"engines": { ]
"npm": ">=6.14.x", },
"yarn": "1.22.x", "engines": {
"node": ">=18.x" "npm": ">=6.14.x",
}, "yarn": "1.22.x",
"devDependencies": { "node": ">=18.x"
"@biomejs/biome": "^1.8.3", },
"lerna": "^8.1.6", "devDependencies": {
"prisma": "^5.17.0", "@biomejs/biome": "^1.8.3",
"rimraf": "^5.0.9" "lerna": "^8.1.6",
}, "prisma": "^5.17.0",
"dependencies": { "rimraf": "^5.0.9"
"@prisma/client": "^5.17.0" },
}, "dependencies": {
"scripts": { "@prisma/client": "^5.17.0"
"dev:api": "yarn workspace @plunk/api dev", },
"dev:dashboard": "yarn workspace @plunk/dashboard dev", "scripts": {
"dev:shared": "yarn workspace @plunk/shared dev", "dev:api": "yarn workspace @plunk/api dev",
"build:api": "yarn build:shared && yarn workspace @plunk/api build", "dev:dashboard": "yarn workspace @plunk/dashboard dev",
"build:dashboard": "yarn build:shared && yarn workspace @plunk/dashboard build", "dev:shared": "yarn workspace @plunk/shared dev",
"build:shared": "yarn generate && yarn workspace @plunk/shared build", "build:api": "yarn build:shared && yarn workspace @plunk/api build",
"clean": "rimraf node_modules yarn.lock && yarn add lerna -DW && lerna run clean", "build:dashboard": "yarn build:shared && yarn workspace @plunk/dashboard build",
"preinstall": "node tools/preinstall.js", "build:shared": "yarn generate && yarn workspace @plunk/shared build",
"migrate": "prisma migrate dev", "clean": "rimraf node_modules yarn.lock && yarn add lerna -DW && lerna run clean",
"migrate:deploy": "prisma migrate deploy", "preinstall": "node tools/preinstall.js",
"generate": "prisma generate", "migrate": "prisma migrate dev",
"services:up": "docker compose -f docker-compose.dev.yml up -d", "migrate:deploy": "prisma migrate deploy",
"services:down": "docker compose -f docker-compose.dev.yml down" "generate": "prisma generate",
} "services:up": "docker compose -f docker-compose.dev.yml up -d",
"services:down": "docker compose -f docker-compose.dev.yml down"
}
} }
+8
View File
@@ -27,6 +27,14 @@ export const DISABLE_SIGNUPS = validateEnv("DISABLE_SIGNUPS", "false").toLowerCa
export const API_URI = validateEnv("API_URI", "http://localhost:4000"); export const API_URI = validateEnv("API_URI", "http://localhost:4000");
export const APP_URI = validateEnv("APP_URI", "http://localhost:3000"); export const APP_URI = validateEnv("APP_URI", "http://localhost:3000");
if (!API_URI.startsWith("http")) {
throw new Error("API_URI must start with 'http'");
}
if (!APP_URI.startsWith("http")) {
throw new Error("APP_URI must start with 'http'");
}
// AWS // AWS
export const AWS_REGION = validateEnv("AWS_REGION"); export const AWS_REGION = validateEnv("AWS_REGION");
export const AWS_ACCESS_KEY_ID = validateEnv("AWS_ACCESS_KEY_ID"); export const AWS_ACCESS_KEY_ID = validateEnv("AWS_ACCESS_KEY_ID");
+9 -1
View File
@@ -1,3 +1,11 @@
import {PrismaClient} from '@prisma/client'; import {PrismaClient} from '@prisma/client';
import signale from 'signale';
export const prisma = new PrismaClient(); let prisma: PrismaClient;
try {
prisma = new PrismaClient();
signale.info('Prisma initialized');
} catch (error) {
signale.error('Failed to initialize Prisma: ', error);
}
export {prisma};
+10 -1
View File
@@ -1,7 +1,16 @@
import Redis from 'ioredis'; import Redis from 'ioredis';
import {REDIS_URL} from '../app/constants'; import {REDIS_URL} from '../app/constants';
import signale from "signale";
export const redis = new Redis(REDIS_URL); let redis: Redis;
try {
redis = new Redis(REDIS_URL);
const infoString = redis.info();
signale.info('Redis initialized: ', infoString);
} catch (error) {
signale.error('Failed to initialize Redis: ', error);
}
export {redis};
export const REDIS_ONE_MINUTE = 60; export const REDIS_ONE_MINUTE = 60;
export const REDIS_DEFAULT_EXPIRY = REDIS_ONE_MINUTE / 60; export const REDIS_DEFAULT_EXPIRY = REDIS_ONE_MINUTE / 60;