2026-04-08 11:19:05 +02:00
|
|
|
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
|
|
|
import { adminFetch } from './admin-api';
|
|
|
|
|
|
|
|
|
|
export interface Environment {
|
|
|
|
|
id: string;
|
|
|
|
|
slug: string;
|
|
|
|
|
displayName: string;
|
|
|
|
|
production: boolean;
|
|
|
|
|
enabled: boolean;
|
2026-04-08 16:23:30 +02:00
|
|
|
defaultContainerConfig: Record<string, unknown>;
|
2026-04-08 11:19:05 +02:00
|
|
|
createdAt: string;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface CreateEnvironmentRequest {
|
|
|
|
|
slug: string;
|
|
|
|
|
displayName: string;
|
|
|
|
|
production: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export interface UpdateEnvironmentRequest {
|
|
|
|
|
displayName: string;
|
|
|
|
|
production: boolean;
|
|
|
|
|
enabled: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function useEnvironments() {
|
|
|
|
|
return useQuery({
|
|
|
|
|
queryKey: ['admin', 'environments'],
|
|
|
|
|
queryFn: () => adminFetch<Environment[]>('/environments'),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function useCreateEnvironment() {
|
|
|
|
|
const qc = useQueryClient();
|
|
|
|
|
return useMutation({
|
|
|
|
|
mutationFn: (req: CreateEnvironmentRequest) =>
|
|
|
|
|
adminFetch<Environment>('/environments', {
|
|
|
|
|
method: 'POST',
|
|
|
|
|
body: JSON.stringify(req),
|
|
|
|
|
}),
|
|
|
|
|
onSuccess: () => qc.invalidateQueries({ queryKey: ['admin', 'environments'] }),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function useUpdateEnvironment() {
|
|
|
|
|
const qc = useQueryClient();
|
|
|
|
|
return useMutation({
|
|
|
|
|
mutationFn: ({ id, ...req }: UpdateEnvironmentRequest & { id: string }) =>
|
|
|
|
|
adminFetch<Environment>(`/environments/${id}`, {
|
|
|
|
|
method: 'PUT',
|
|
|
|
|
body: JSON.stringify(req),
|
|
|
|
|
}),
|
|
|
|
|
onSuccess: () => qc.invalidateQueries({ queryKey: ['admin', 'environments'] }),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-08 18:52:39 +02:00
|
|
|
export function useUpdateDefaultContainerConfig() {
|
|
|
|
|
const qc = useQueryClient();
|
|
|
|
|
return useMutation({
|
|
|
|
|
mutationFn: ({ id, config }: { id: string; config: Record<string, unknown> }) =>
|
|
|
|
|
adminFetch<Environment>(`/environments/${id}/default-container-config`, {
|
|
|
|
|
method: 'PUT',
|
|
|
|
|
body: JSON.stringify(config),
|
|
|
|
|
}),
|
|
|
|
|
onSuccess: () => qc.invalidateQueries({ queryKey: ['admin', 'environments'] }),
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
2026-04-08 11:19:05 +02:00
|
|
|
export function useDeleteEnvironment() {
|
|
|
|
|
const qc = useQueryClient();
|
|
|
|
|
return useMutation({
|
|
|
|
|
mutationFn: (id: string) =>
|
|
|
|
|
adminFetch<void>(`/environments/${id}`, { method: 'DELETE' }),
|
|
|
|
|
onSuccess: () => qc.invalidateQueries({ queryKey: ['admin', 'environments'] }),
|
|
|
|
|
});
|
|
|
|
|
}
|