From a669f6368d453b31d0fc2192d2ce0a0d5a247eb8 Mon Sep 17 00:00:00 2001 From: Marcel Date: Thu, 16 Apr 2026 22:33:12 +0200 Subject: [PATCH] feat(#248): expose parentId in TagTreeNodeDTO OpenAPI schema and regenerate TypeScript types Co-Authored-By: Claude Sonnet 4.6 --- .../familienarchiv/dto/TagTreeNodeDTO.java | 10 +- frontend/src/lib/generated/api.ts | 101 ++++++++++++++++-- 2 files changed, 103 insertions(+), 8 deletions(-) diff --git a/backend/src/main/java/org/raddatz/familienarchiv/dto/TagTreeNodeDTO.java b/backend/src/main/java/org/raddatz/familienarchiv/dto/TagTreeNodeDTO.java index 0cec7260..f227e602 100644 --- a/backend/src/main/java/org/raddatz/familienarchiv/dto/TagTreeNodeDTO.java +++ b/backend/src/main/java/org/raddatz/familienarchiv/dto/TagTreeNodeDTO.java @@ -3,4 +3,12 @@ package org.raddatz.familienarchiv.dto; import java.util.List; import java.util.UUID; -public record TagTreeNodeDTO(UUID id, String name, String color, int documentCount, List children, UUID parentId) {} +import io.swagger.v3.oas.annotations.media.Schema; + +public record TagTreeNodeDTO( + UUID id, + String name, + String color, + int documentCount, + List children, + @Schema(description = "Parent tag ID, null for root tags") UUID parentId) {} diff --git a/frontend/src/lib/generated/api.ts b/frontend/src/lib/generated/api.ts index 0bc57555..0f5e1c0c 100644 --- a/frontend/src/lib/generated/api.ts +++ b/frontend/src/lib/generated/api.ts @@ -180,6 +180,22 @@ export interface paths { patch?: never; trace?: never; }; + "/api/tags/{id}/merge": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post: operations["mergeTag"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/api/persons": { parameters: { query?: never; @@ -1140,6 +1156,22 @@ export interface paths { patch?: never; trace?: never; }; + "/api/tags/{id}/subtree": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + delete: operations["deleteSubtree"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; "/api/persons/{id}/aliases/{aliasId}": { parameters: { query?: never; @@ -1340,6 +1372,10 @@ export interface components { currentPassword?: string; newPassword?: string; }; + MergeTagDTO: { + /** Format: uuid */ + targetId?: string; + }; PersonNameAliasDTO: { lastName: string; firstName?: string; @@ -1566,6 +1602,11 @@ export interface components { /** Format: int32 */ documentCount?: number; children?: components["schemas"]["TagTreeNodeDTO"][]; + /** + * Format: uuid + * @description Parent tag ID, null for root tags + */ + parentId?: string; }; StatsDTO: { /** Format: int64 */ @@ -1578,17 +1619,17 @@ export interface components { /** Format: uuid */ id?: string; displayName?: string; + personType?: string; firstName?: string; lastName?: string; + /** Format: int64 */ + documentCount?: number; /** Format: int32 */ birthYear?: number; /** Format: int32 */ deathYear?: number; alias?: string; notes?: string; - /** Format: int64 */ - documentCount?: number; - personType?: string; }; TrainingInfoResponse: { /** Format: int32 */ @@ -1630,11 +1671,13 @@ export interface components { timeout?: number; }; PageNotificationDTO: { - /** Format: int32 */ - totalPages?: number; /** Format: int64 */ totalElements?: number; + /** Format: int32 */ + totalPages?: number; pageable?: components["schemas"]["PageableObject"]; + first?: boolean; + last?: boolean; /** Format: int32 */ size?: number; content?: components["schemas"]["NotificationDTO"][]; @@ -1643,8 +1686,6 @@ export interface components { sort?: components["schemas"]["SortObject"]; /** Format: int32 */ numberOfElements?: number; - first?: boolean; - last?: boolean; empty?: boolean; }; PageableObject: { @@ -2246,6 +2287,32 @@ export interface operations { }; }; }; + mergeTag: { + parameters: { + query?: never; + header?: never; + path: { + id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MergeTagDTO"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["Tag"]; + }; + }; + }; + }; getPersons: { parameters: { query?: { @@ -3875,6 +3942,26 @@ export interface operations { }; }; }; + deleteSubtree: { + parameters: { + query?: never; + header?: never; + path: { + id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description No Content */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + }; + }; removeAlias: { parameters: { query?: never;