Skip to content

Persist CDN invalidation requests and virus scan results #175

Description

@SYLVIANNORUKA

Description: CdnService.invalidations and VirusScanService.results are both process-local Maps; GET /cdn/invalidations/:id and any future virus-scan-status endpoint return nothing after a restart, and in a horizontally-scaled deployment a request handled by one instance can never see the invalidation/scan state recorded by another, making CdnController.getInvalidation/listInvalidations unreliable in production.

Requirements:

  • Add a CdnInvalidationRequest Prisma model (id, paths JSON, status, requestedAt, completedAt, error) and a FileScanResult Prisma model (fileId, status, startedAt, completedAt, details, attempts).
  • Replace the in-memory invalidations Map in CdnService and results Map in VirusScanService with Prisma persistence.
  • Add GET /uploads/scans/:fileId (or fold into the new UploadsController) exposing VirusScanService.getScanStatus, which currently has no endpoint at all.
  • Add migrations and tests verifying both stores survive across service instantiations.

Acceptance Criteria:

  • CDN invalidation requests remain retrievable via GET /cdn/invalidations/:id after an application restart.
  • Virus scan results are queryable via a new endpoint and persist across restarts.

Technical Details:
Files: src/modules/uploads/cdn.service.ts, src/modules/uploads/virus-scan.service.ts, src/modules/uploads/cdn.controller.ts, prisma/schema.prisma
Libraries: prisma, @prisma/client

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions