feat(#277): Drizzle Schema mail_archive_link + Migration #309

Merged
admin-mrrm merged 1 commit from feat/277-mail-archive-link into main 2026-05-16 14:49:43 +02:00
Owner

Summary

  • Neue Tabelle mail_archive_link in mail.schema.ts:
    • id (uuid pk)
    • account_id (uuid, FK -> mail_accounts, ON DELETE CASCADE)
    • folder (text)
    • message_uid (integer) — siehe Anmerkung unten
    • paperless_document_id (integer)
    • archived_at (timestamptz, default now())
    • UNIQUE(account_id, folder, message_uid)
  • Drizzle-Migration drizzle/0013_organic_network.sql + Snapshot.
  • Relations: mailAccounts.archiveLinks (many) und mailArchiveLink.account (one).

Abweichung vom Issue-Body

Issue-Body sagt message_uid (text), ich habe integer gewaehlt — konsistent zu mail_messages_cache.uid (integer) und passend zum IMAP-Protokoll (UID = 32-bit unsigned). Falls echte Server beobachtbar nicht-numerische UIDs liefern, kann das spaeter via Migration auf text gehoben werden.

Test plan

  • pnpm --filter @mrrmlab/api db:generate -> 0013_organic_network.sql sauber erzeugt
  • pnpm --filter @mrrmlab/api typecheck clean
  • pnpm --filter @mrrmlab/api test 276/276 gruen (kein Service-Code touched)
  • Migration auf dev-neu: pnpm db:migrate im api-Container nach Deploy

Bezug

Foundation fuer #278 (Mail->Paperless Archivierungs-Service) und #279 (REST-Endpoint + archived-Indikator).

Closes #277

## Summary - Neue Tabelle `mail_archive_link` in `mail.schema.ts`: - `id` (uuid pk) - `account_id` (uuid, FK -> `mail_accounts`, ON DELETE CASCADE) - `folder` (text) - `message_uid` (integer) — siehe Anmerkung unten - `paperless_document_id` (integer) - `archived_at` (timestamptz, default `now()`) - UNIQUE(`account_id`, `folder`, `message_uid`) - Drizzle-Migration `drizzle/0013_organic_network.sql` + Snapshot. - Relations: `mailAccounts.archiveLinks` (many) und `mailArchiveLink.account` (one). ## Abweichung vom Issue-Body Issue-Body sagt `message_uid (text)`, ich habe `integer` gewaehlt — konsistent zu `mail_messages_cache.uid` (integer) und passend zum IMAP-Protokoll (UID = 32-bit unsigned). Falls echte Server beobachtbar nicht-numerische UIDs liefern, kann das spaeter via Migration auf text gehoben werden. ## Test plan - [x] `pnpm --filter @mrrmlab/api db:generate` -> 0013_organic_network.sql sauber erzeugt - [x] `pnpm --filter @mrrmlab/api typecheck` clean - [x] `pnpm --filter @mrrmlab/api test` 276/276 gruen (kein Service-Code touched) - [ ] Migration auf dev-neu: `pnpm db:migrate` im api-Container nach Deploy ## Bezug Foundation fuer #278 (Mail->Paperless Archivierungs-Service) und #279 (REST-Endpoint + `archived`-Indikator). Closes #277
feat(#277): Drizzle Schema mail_archive_link + Migration
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
aef95e700e
- mailArchiveLink-Tabelle in mail.schema.ts (uuid pk, FK auf mail_accounts cascade, unique account+folder+uid)
- messageUid bewusst integer statt text (konsistent zu mail_messages_cache.uid)
- Drizzle-Migration 0013_organic_network.sql

Foundation fuer #278 (Mail->Paperless Archivierungs-Service) und
#279 (REST-Endpoint + archived-Indikator im Mail-Listing).

Refs #277

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
admin-mrrm deleted branch feat/277-mail-archive-link 2026-05-16 14:49:44 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
admin-mrrm/mrrmlabapp!309
No description provided.