/queens: Liste; /queens/new: Anlegeformular; /queens/[id]: Bearbeiten (Zucht/Herkunft/Status/Notizen), "Volk zuweisen"-Dialog (nur ACTIVE Voelker zur Auswahl) und Volk-Historie. Bearbeitungsformular initialisiert Zustand direkt aus der geladenen Queen (gleiches Key-Reset-Pattern wie bei Apiaries/Colonies). Nav-Leiste und proxy.ts-Matcher um /queens erweitert. 10 Vitest-Tests, Lint, Typecheck und Build gruen. Kompletter Flow (Anlegen, Volk zuweisen, Historie) live im Browser gegen den echten Server verifiziert.
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { apiFetch } from "@/lib/auth/api-client";
|
|
import {
|
|
AssignColonyInput,
|
|
CreateQueenInput,
|
|
Queen,
|
|
QueenColonyHistoryEntry,
|
|
UpdateQueenInput,
|
|
} from "./types";
|
|
|
|
export function fetchQueens(): Promise<Queen[]> {
|
|
return apiFetch<Queen[]>("/queens");
|
|
}
|
|
|
|
export function fetchQueen(id: string): Promise<Queen> {
|
|
return apiFetch<Queen>(`/queens/${id}`);
|
|
}
|
|
|
|
export function fetchQueenHistory(id: string): Promise<QueenColonyHistoryEntry[]> {
|
|
return apiFetch<QueenColonyHistoryEntry[]>(`/queens/${id}/history`);
|
|
}
|
|
|
|
export function createQueen(input: CreateQueenInput): Promise<Queen> {
|
|
return apiFetch<Queen>("/queens", {
|
|
method: "POST",
|
|
body: JSON.stringify(input),
|
|
});
|
|
}
|
|
|
|
export function updateQueen(id: string, input: UpdateQueenInput): Promise<Queen> {
|
|
return apiFetch<Queen>(`/queens/${id}`, {
|
|
method: "PATCH",
|
|
body: JSON.stringify(input),
|
|
});
|
|
}
|
|
|
|
export function assignQueenColony(id: string, input: AssignColonyInput): Promise<Queen> {
|
|
return apiFetch<Queen>(`/queens/${id}/assign-colony`, {
|
|
method: "POST",
|
|
body: JSON.stringify(input),
|
|
});
|
|
}
|