feat: implement file and repository management hooks and APIs
This commit is contained in:
43
src/data/hooks/useFiles.ts
Normal file
43
src/data/hooks/useFiles.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
||||
import { files_get_signed_url, files_list } from "../api/files.api";
|
||||
import { openai_files_delete, openai_files_upload } from "../api/openaiFiles.api";
|
||||
|
||||
const qkFiles = {
|
||||
list: (filters: any) => ["files", "list", filters] as const,
|
||||
};
|
||||
|
||||
export function useFilesList(filters?: { temporal?: boolean; search?: string; limit?: number }) {
|
||||
return useQuery({
|
||||
queryKey: qkFiles.list(filters ?? {}),
|
||||
queryFn: () => files_list(filters),
|
||||
staleTime: 15_000,
|
||||
});
|
||||
}
|
||||
|
||||
export function useUploadOpenAIFile() {
|
||||
const qc = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: openai_files_upload,
|
||||
onSuccess: () => {
|
||||
qc.invalidateQueries({ queryKey: ["files"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteOpenAIFile() {
|
||||
const qc = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: openai_files_delete,
|
||||
onSuccess: () => {
|
||||
qc.invalidateQueries({ queryKey: ["files"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useFileSignedUrl() {
|
||||
return useMutation({
|
||||
mutationFn: files_get_signed_url,
|
||||
});
|
||||
}
|
||||
46
src/data/hooks/useRepositories.ts
Normal file
46
src/data/hooks/useRepositories.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
||||
import { repos_add_files, repos_create, repos_delete, repos_remove_files } from "../api/repositories.api";
|
||||
|
||||
export function useCreateRepository() {
|
||||
const qc = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: repos_create,
|
||||
onSuccess: () => {
|
||||
qc.invalidateQueries({ queryKey: ["repos"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useDeleteRepository() {
|
||||
const qc = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: repos_delete,
|
||||
onSuccess: () => {
|
||||
qc.invalidateQueries({ queryKey: ["repos"] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useRepoAddFiles() {
|
||||
const qc = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: repos_add_files,
|
||||
onSuccess: (_ok, vars) => {
|
||||
qc.invalidateQueries({ queryKey: ["repos", vars.repoId] });
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
export function useRepoRemoveFiles() {
|
||||
const qc = useQueryClient();
|
||||
|
||||
return useMutation({
|
||||
mutationFn: repos_remove_files,
|
||||
onSuccess: (_ok, vars) => {
|
||||
qc.invalidateQueries({ queryKey: ["repos", vars.repoId] });
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user