refactor(backend+frontend): joinedAt aus GroupMember entfernen #197

Closed
opened 2026-07-02 22:40:57 +00:00 by niboer · 0 comments
Owner

Einordnung

  • Position: 3 (Phase A, parallel zu #194+#196)
  • Benötigt: — (keine)
  • Wird benötigt von: #198 (zentrale Spalten brauchen saubere groups-Tabelle)

Beschreibung

Das Feld joinedAt auf GroupMember wird weder im UI benoetigt noch sinnvoll genutzt. Es soll vollstaendig aus dem Datenmodell, der API und dem Frontend entfernt werden.

Da es keinen alten Datenbestand gibt (siehe AGENTS.md: "Wenn ein neues Datenbank-Schema gebraucht wird, ueberschreibe die aktuellen Datenbankmigrationen"), wird die bestehende Migration 0001_full_schema ueberschrieben.


Betroffene Stellen (35 Vorkommen)

Backend: Datenbank

Datei Zeile Aenderung
backend/prisma/schema.prisma 109 joinedAt DateTime @default(now()) @map("joinedAt") entfernen
backend/prisma/migrations/0001_full_schema/migration.sql 73 "joinedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP entfernen

Backend: API-Routen

Datei Zeile(n) Aenderung
backend/src/routes/groups.ts 31 joinedAt: m.joinedAt aus toGroupMemberResponse() entfernen
backend/src/routes/groups.ts 318 orderBy: { joinedAt: 'asc' } entfernen
backend/src/routes/groups.ts 330 joinedAt: m.joinedAt aus Batch-Response entfernen
backend/src/routes/persons.ts 60 joinedAt: m.joinedAt aus Person-Detail entfernen
backend/src/routes/export.ts 93 joinedAt: gm.joinedAt aus Datenexport entfernen

Backend: OpenAPI-Schema

Datei Zeilen Aenderung
backend/openapi.yaml 731 joinedAt: aus GroupMemberWithPerson entfernen
backend/openapi.yaml 759 joinedAt: aus GroupMember entfernen
backend/openapi.yaml 775 - joinedAt aus required entfernen

Backend: Tests

Datei Zeilen Aenderung
backend/src/__tests__/groups.test.ts 110, 243, 373-374, 401, 478, 526 joinedAt aus Testdaten + Mocks entfernen

Frontend: API-Typen (generiert)

Nach Aenderung der openapi.yaml wird npm run generate:api ausgefuehrt, wodurch frontend/src/lib/api/generated.ts automatisch aktualisiert wird (Zeilen 349, 425 entfallen).

Frontend: UI

Datei Zeilen Aenderung
frontend/src/routes/app/groups/[groupId]/+page.svelte 101, 120-121 Spalte joinedAt aus Mitglieder-Tabelle entfernen
frontend/src/routes/app/groups/[groupId]/+page.svelte 137, 147-148 Spalte joinedAt aus Pending-Requests-Tabelle entfernen (joinedAtcreatedAt oder ohne Datum)

Frontend: Tests

Datei Zeilen Aenderung
frontend/src/tests/groups.test.ts 261-262, 265 joinedAt aus Testdaten entfernen
frontend/src/tests/self-service.test.ts 49-50, 86-87, 117, 246-247 joinedAt aus Testdaten entfernen

Hinweise zur pending-requests-Tabelle

Die pending-requests-Tabelle in groups/[groupId]/+page.svelte hat aktuell die Spalten name, joinedAt, actions. Nach Entfernen von joinedAt stellt sich die Frage:

  • Option A: Nur name + actions (kein Datum)
  • Option B: createdAt der Person anzeigen (falls sinnvoll)

Vorschlag: Option A — die Tabelle ist klein, das Datum ist hier verzichtbar.


Vorgehen

  1. joinedAt aus schema.prisma entfernen
  2. Migration 0001_full_schema ueberschreiben (migration.sql anpassen)
  3. joinedAt aus allen API-Responses entfernen (groups.ts, persons.ts, export.ts)
  4. joinedAt aus openapi.yaml entfernen
  5. npm run generate:api im Frontend
  6. joinedAt aus groups/[groupId]/+page.svelte entfernen
  7. joinedAt aus Tests entfernen
  8. npm run test in Backend + Frontend
  9. npm run lint in Backend + Frontend
## Einordnung - **Position:** 3 (Phase A, parallel zu #194+#196) - **Benötigt:** — (keine) - **Wird benötigt von:** #198 (zentrale Spalten brauchen saubere groups-Tabelle) ## Beschreibung Das Feld `joinedAt` auf `GroupMember` wird weder im UI benoetigt noch sinnvoll genutzt. Es soll vollstaendig aus dem Datenmodell, der API und dem Frontend entfernt werden. Da es keinen alten Datenbestand gibt (siehe `AGENTS.md`: "Wenn ein neues Datenbank-Schema gebraucht wird, ueberschreibe die aktuellen Datenbankmigrationen"), wird die bestehende Migration `0001_full_schema` ueberschrieben. --- ## Betroffene Stellen (35 Vorkommen) ### Backend: Datenbank | Datei | Zeile | Aenderung | |---|---|---| | `backend/prisma/schema.prisma` | 109 | `joinedAt DateTime @default(now()) @map("joinedAt")` entfernen | | `backend/prisma/migrations/0001_full_schema/migration.sql` | 73 | `"joinedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP` entfernen | ### Backend: API-Routen | Datei | Zeile(n) | Aenderung | |---|---|---| | `backend/src/routes/groups.ts` | 31 | `joinedAt: m.joinedAt` aus `toGroupMemberResponse()` entfernen | | `backend/src/routes/groups.ts` | 318 | `orderBy: { joinedAt: 'asc' }` entfernen | | `backend/src/routes/groups.ts` | 330 | `joinedAt: m.joinedAt` aus Batch-Response entfernen | | `backend/src/routes/persons.ts` | 60 | `joinedAt: m.joinedAt` aus Person-Detail entfernen | | `backend/src/routes/export.ts` | 93 | `joinedAt: gm.joinedAt` aus Datenexport entfernen | ### Backend: OpenAPI-Schema | Datei | Zeilen | Aenderung | |---|---|---| | `backend/openapi.yaml` | 731 | `joinedAt:` aus `GroupMemberWithPerson` entfernen | | `backend/openapi.yaml` | 759 | `joinedAt:` aus `GroupMember` entfernen | | `backend/openapi.yaml` | 775 | `- joinedAt` aus `required` entfernen | ### Backend: Tests | Datei | Zeilen | Aenderung | |---|---|---| | `backend/src/__tests__/groups.test.ts` | 110, 243, 373-374, 401, 478, 526 | `joinedAt` aus Testdaten + Mocks entfernen | ### Frontend: API-Typen (generiert) Nach Aenderung der `openapi.yaml` wird `npm run generate:api` ausgefuehrt, wodurch `frontend/src/lib/api/generated.ts` automatisch aktualisiert wird (Zeilen 349, 425 entfallen). ### Frontend: UI | Datei | Zeilen | Aenderung | |---|---|---| | `frontend/src/routes/app/groups/[groupId]/+page.svelte` | 101, 120-121 | Spalte `joinedAt` aus Mitglieder-Tabelle entfernen | | `frontend/src/routes/app/groups/[groupId]/+page.svelte` | 137, 147-148 | Spalte `joinedAt` aus Pending-Requests-Tabelle entfernen (`joinedAt` → `createdAt` oder ohne Datum) | ### Frontend: Tests | Datei | Zeilen | Aenderung | |---|---|---| | `frontend/src/tests/groups.test.ts` | 261-262, 265 | `joinedAt` aus Testdaten entfernen | | `frontend/src/tests/self-service.test.ts` | 49-50, 86-87, 117, 246-247 | `joinedAt` aus Testdaten entfernen | --- ## Hinweise zur pending-requests-Tabelle Die pending-requests-Tabelle in `groups/[groupId]/+page.svelte` hat aktuell die Spalten `name`, `joinedAt`, `actions`. Nach Entfernen von `joinedAt` stellt sich die Frage: - **Option A:** Nur `name` + `actions` (kein Datum) - **Option B:** `createdAt` der Person anzeigen (falls sinnvoll) Vorschlag: Option A — die Tabelle ist klein, das Datum ist hier verzichtbar. --- ## Vorgehen 1. `joinedAt` aus `schema.prisma` entfernen 2. Migration `0001_full_schema` ueberschreiben (`migration.sql` anpassen) 3. `joinedAt` aus allen API-Responses entfernen (groups.ts, persons.ts, export.ts) 4. `joinedAt` aus `openapi.yaml` entfernen 5. `npm run generate:api` im Frontend 6. `joinedAt` aus `groups/[groupId]/+page.svelte` entfernen 7. `joinedAt` aus Tests entfernen 8. `npm run test` in Backend + Frontend 9. `npm run lint` in Backend + Frontend
Sign in to join this conversation.
No description provided.