Refactor API and worker applications to use NestJS framework. Update package versions and scripts for improved functionality. Enhance TypeScript configurations and add new dependencies for better development support. Remove deprecated main.ts file from worker application.

This commit is contained in:
smueller
2026-06-26 10:51:27 +02:00
parent 8d659317b9
commit fdf8392d42
23 changed files with 4383 additions and 81 deletions

View File

@@ -1,4 +1,4 @@
import { Worker, type ConnectionOptions } from 'bullmq';
import { Job, Worker, type ConnectionOptions } from 'bullmq';
import IORedis from 'ioredis';
import { validateConfig } from '@hexahost/config';
@@ -20,7 +20,7 @@ function createQueueWorker(
): Worker {
return new Worker(
queueName,
async (job) => {
async (job: Job) => {
logger.info(
{ queue: queueName, jobId: job.id, jobName: job.name },
'Processing job',
@@ -42,11 +42,11 @@ async function bootstrap(): Promise<void> {
);
for (const worker of workers) {
worker.on('completed', (job) => {
logger.info({ queue: worker.name, jobId: job.id }, 'Job completed');
worker.on('completed', (job: Job | undefined) => {
logger.info({ queue: worker.name, jobId: job?.id }, 'Job completed');
});
worker.on('failed', (job, error) => {
worker.on('failed', (job: Job | undefined, error: Error) => {
logger.error(
{ queue: worker.name, jobId: job?.id, err: error },
'Job failed',

View File

@@ -1,14 +0,0 @@
const redisUrl = process.env.REDIS_URL ?? "redis://localhost:6379";
console.log(
JSON.stringify({
level: "info",
msg: "worker started (phase 0 stub)",
redis: redisUrl.replace(/:[^:@]+@/, ":***@"),
}),
);
// Phase 0: worker process stays alive for compose; BullMQ queues land in Phase 1+
setInterval(() => {
console.log(JSON.stringify({ level: "debug", msg: "worker heartbeat" }));
}, 60_000);