"use client" import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query" import api from "@/lib/api" import type { VolumeResponse, LibraryPathResponse } from "@/lib/types" export function useVolumes() { return useQuery({ queryKey: ["admin", "volumes"], queryFn: async () => { const { data } = await api.get("/storage/volumes") return data }, }) } export function useRegisterVolume() { const qc = useQueryClient() return useMutation({ mutationFn: async (body: { volume_name: string uri_prefix: string is_writable: boolean }) => { const { data } = await api.post("/storage/volumes", body) return data }, onSuccess: () => qc.invalidateQueries({ queryKey: ["admin", "volumes"] }), }) } export function useDeleteVolume() { const qc = useQueryClient() return useMutation({ mutationFn: async (id: string) => { await api.delete(`/storage/volumes/${id}`) }, onSuccess: () => qc.invalidateQueries({ queryKey: ["admin", "volumes"] }), }) } export function useLibraryPaths() { return useQuery({ queryKey: ["admin", "library-paths"], queryFn: async () => { const { data } = await api.get( "/storage/library-paths/all", ) return data }, }) } export function useRegisterLibraryPath() { const qc = useQueryClient() return useMutation({ mutationFn: async (body: { volume_id: string relative_path: string owner_id: string is_ingest_destination: boolean }) => { const { data } = await api.post( "/storage/library-paths", body, ) return data }, onSuccess: () => qc.invalidateQueries({ queryKey: ["admin", "library-paths"] }), }) } export function useDeleteLibraryPath() { const qc = useQueryClient() return useMutation({ mutationFn: async (id: string) => { await api.delete(`/storage/library-paths/${id}`) }, onSuccess: () => qc.invalidateQueries({ queryKey: ["admin", "library-paths"] }), }) }