Skip to content

feat(handler): Phase 3E — Stage handlers (fetch/render/upload) + Job/Handler refactor - #10

Merged
smallchungus merged 10 commits into
mainfrom
phase-3e-handlers
Apr 18, 2026
Merged

feat(handler): Phase 3E — Stage handlers (fetch/render/upload) + Job/Handler refactor#10
smallchungus merged 10 commits into
mainfrom
phase-3e-handlers

Conversation

@smallchungus

Copy link
Copy Markdown
Owner

Phase 3E: real Gmail->PDF->Drive pipeline.

  • Job model gains user_id, gmail_message_id, is_synthetic columns (read/written by Go now; schema columns existed since 3A).
  • New store.AdvanceJob(jobID, nextStage) transitions a running job to next stage queued.
  • Handler interface returns (nextStage, err). Worker.ProcessOne advances or marks done accordingly.
  • Three stage handlers in internal/handler:
    • FetchHandler: gmail.FetchMessage -> /data/mime/.eml -> 'render'
    • RenderHandler: parse MIME, build HTML wrapper, gotenberg -> /data/pdf/.pdf -> 'upload'
    • UploadHandler: drive.EnsureFolder for YYYY/MM/DD (cached in Redis), drive.Upload PDF -> '' (terminal)
  • cmd/worker switches on --stage to pick the handler. --stage=test keeps NoopHandler so loadtest still works without OAuth credentials.

Out of scope (Phase 3F): scheduler binary, manual OAuth setup helper, attachment preservation.

@smallchungus
smallchungus merged commit eefdab0 into main Apr 18, 2026
3 checks passed
@smallchungus
smallchungus deleted the phase-3e-handlers branch April 18, 2026 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant