Commit Graph

10 Commits

Author SHA1 Message Date
e5db71ead1 fix: Bug 1+2+3 — SQL Cross-Join, PATCH 404 vs 400, API-Test-Skip
- getCampaignRecipients: EXISTS-Subquery statt Cross-Join verhindert Mehrfachversand
- updateCampaign: SELECT vor UPDATE unterscheidet 'nicht gefunden' (404) von 'nicht im Draft' (400)
- campaigns-api.test.ts: describe.skip entfernt, Mocks für DB-Abhängigkeiten ergänzt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 17:34:18 +00:00
25889a5419 fix: Rollback auf draft bei Versand-Fehlern, Fehlermeldung updateCampaign
- send/route.ts: try/catch + Rollback auf draft wenn Empfänger-Query oder Queue-Enqueue fehlschlägt
- campaigns.ts: Fehlermeldung 'Kampagne nicht im Draft-Status' (zuvor enthielt sie 'nicht gefunden' — verursachte falschen 404 in PATCH)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 13:50:21 +00:00
4a54d31bd0 fix: updateCampaignStatus überschreibt keine bestehenden Scheduling-Daten, fehlende Tests ergänzt 2026-04-17 09:55:45 +00:00
4245a1fbde feat: Campaign Repository — CRUD mit Tenant-Isolation und Result-Pattern
Implementiert createCampaign, getCampaign, listCampaigns, updateCampaign und
updateCampaignStatus mit withTenant-Context, snake_case→camelCase Mapping und
Result-Pattern. 10 Unit-Tests, alle grün.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 09:52:55 +00:00
3c3088e66b fix: execute mit optionalen Params, release(error) bei reset-Fehler, Tests ergänzt 2026-04-17 08:35:31 +00:00
4f739f7b1e fix: release() absichern, DATABASE_URL Startup-Check, execute-Test hinzugefügt 2026-04-17 08:33:07 +00:00
c01befa477 fix: Einzelner shared Pool, finally-Block verschluckt nicht Original-Fehler, Pool-Error-Handler
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 08:30:57 +00:00
cdfdd025d2 fix: Pool-Connection-Isolation in withTenant, SQL-Injection-Schutz, ClickHouse env-var-Check
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 08:28:21 +00:00
ad0febe2cf fix: QueryResultRow-Constraint für db.query<T> unter TypeScript strict 2026-04-17 08:24:15 +00:00
506197623a feat: PostgreSQL withTenant-Helper und ClickHouse-Client
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 08:20:25 +00:00