9718d6888a
Build and Push Multi-Platform Images / build-and-push (push) Successful in 31s
Die Warteschlange liegt nicht mehr im Speicher, sondern in der neuen Tabelle webhook_queue (Entity WebhookQueueItem, documentId als Primärschlüssel). So überstehen ausstehende IDs einen Neustart und werden nach dem Boot weiterverarbeitet. - Neue Entity + Migration (CreateWebhookQueue); in data-source.ts/Barrel registriert. Dev: synchronize legt die Tabelle an; Prod: migrationsRun. - enqueue nutzt INSERT IGNORE (atomar, race-sicher) -> Dedup über den PK. - processQueue holt FIFO (createdAt ASC), entfernt die Zeile vor der Verarbeitung, arbeitet sequenziell (isProcessing-Guard). - getStatus/queueSize lesen die DB-Anzahl. Controller awaitet enqueue. - Unit-Test mit simuliertem FIFO-Repo: Dedup, Remove-on-start, Re-Enqueue, No-Parallel (deterministisch). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
20 lines
702 B
TypeScript
20 lines
702 B
TypeScript
import { Module } from '@nestjs/common';
|
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
import { WebhookController } from './webhook.controller';
|
|
import { WebhookQueueService } from './webhook-queue.service';
|
|
import { PaperlessModule } from '../paperless/paperless.module';
|
|
import { AuthModule } from '../auth/auth.module';
|
|
import { Setting } from '../database/entities/setting.entity';
|
|
import { WebhookQueueItem } from '../database/entities/webhook-queue-item.entity';
|
|
|
|
@Module({
|
|
imports: [
|
|
TypeOrmModule.forFeature([Setting, WebhookQueueItem]),
|
|
PaperlessModule,
|
|
AuthModule,
|
|
],
|
|
controllers: [WebhookController],
|
|
providers: [WebhookQueueService],
|
|
})
|
|
export class WebhookModule {}
|