diff --git a/server/src/pgboss-worker.ts b/server/src/pgboss-worker.ts index 0771cc27..43dfbe73 100644 --- a/server/src/pgboss-worker.ts +++ b/server/src/pgboss-worker.ts @@ -21,7 +21,11 @@ import { airtableUpdateTasks, processAirtableUpdates } from './workflow-manageme import { RemoteBrowser } from './browser-management/classes/RemoteBrowser'; import { io as serverIo } from "./server"; -const pgBossConnectionString = `postgres://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; +if (!process.env.DB_USER || !process.env.DB_PASSWORD || !process.env.DB_HOST || !process.env.DB_PORT || !process.env.DB_NAME) { + throw new Error('Failed to start pgboss worker: one or more required environment variables are missing.'); +} + +const pgBossConnectionString = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; interface InitializeBrowserData { userId: string; @@ -522,4 +526,4 @@ process.on('SIGINT', async () => { }); // For use in other files -export { pgBoss }; \ No newline at end of file +export { pgBoss }; diff --git a/server/src/schedule-worker.ts b/server/src/schedule-worker.ts index 73afd872..91c3c224 100644 --- a/server/src/schedule-worker.ts +++ b/server/src/schedule-worker.ts @@ -7,7 +7,11 @@ import Robot from './models/Robot'; import { handleRunRecording } from './workflow-management/scheduler'; import { computeNextRun } from './utils/schedule'; -const pgBossConnectionString = `postgres://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; +if (!process.env.DB_USER || !process.env.DB_PASSWORD || !process.env.DB_HOST || !process.env.DB_PORT || !process.env.DB_NAME) { + throw new Error('One or more required environment variables are missing.'); +} + +const pgBossConnectionString = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; const pgBoss = new PgBoss({connectionString: pgBossConnectionString }); diff --git a/server/src/storage/db.ts b/server/src/storage/db.ts index 25c1d104..72b9f22e 100644 --- a/server/src/storage/db.ts +++ b/server/src/storage/db.ts @@ -3,7 +3,11 @@ import dotenv from 'dotenv'; dotenv.config(); -const databaseUrl = `postgresql://${process.env.DB_USER}:${process.env.DB_PASSWORD}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; +if (!process.env.DB_USER || !process.env.DB_PASSWORD || !process.env.DB_HOST || !process.env.DB_PORT || !process.env.DB_NAME) { + throw new Error('One or more required environment variables are missing.'); +} + +const databaseUrl = `postgresql://${process.env.DB_USER}:${encodeURIComponent(process.env.DB_PASSWORD)}@${process.env.DB_HOST}:${process.env.DB_PORT}/${process.env.DB_NAME}`; // Extract the hostname using the URL constructor const host = new URL(databaseUrl).hostname; @@ -42,4 +46,4 @@ export const syncDB = async () => { }; -export default sequelize; \ No newline at end of file +export default sequelize;