You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import { get, post } from './base'
  2. import type {
  3. FileUploadConfigResponse,
  4. Member,
  5. StructuredOutputRulesRequestBody,
  6. StructuredOutputRulesResponse,
  7. } from '@/models/common'
  8. import { useMutation, useQuery } from '@tanstack/react-query'
  9. import type { FileTypesRes } from './datasets'
  10. const NAME_SPACE = 'common'
  11. export const useFileUploadConfig = () => {
  12. return useQuery<FileUploadConfigResponse>({
  13. queryKey: [NAME_SPACE, 'file-upload-config'],
  14. queryFn: () => get<FileUploadConfigResponse>('/files/upload'),
  15. })
  16. }
  17. export const useGenerateStructuredOutputRules = () => {
  18. return useMutation({
  19. mutationKey: [NAME_SPACE, 'generate-structured-output-rules'],
  20. mutationFn: (body: StructuredOutputRulesRequestBody) => {
  21. return post<StructuredOutputRulesResponse>(
  22. '/rule-structured-output-generate',
  23. { body },
  24. )
  25. },
  26. })
  27. }
  28. export const useFileSupportTypes = () => {
  29. return useQuery<FileTypesRes>({
  30. queryKey: [NAME_SPACE, 'file-types'],
  31. queryFn: () => get<FileTypesRes>('/files/support-type'),
  32. })
  33. }
  34. type MemberResponse = {
  35. accounts: Member[] | null
  36. }
  37. export const useMembers = () => {
  38. return useQuery<MemberResponse>({
  39. queryKey: [NAME_SPACE, 'members'],
  40. queryFn: (params: Record<string, any>) => get<MemberResponse>('/workspaces/current/members', {
  41. params,
  42. }),
  43. })
  44. }
  45. type FilePreviewResponse = {
  46. content: string
  47. }
  48. export const useFilePreview = (fileID: string) => {
  49. return useQuery<FilePreviewResponse>({
  50. queryKey: [NAME_SPACE, 'file-preview', fileID],
  51. queryFn: () => get<FilePreviewResponse>(`/files/${fileID}/preview`),
  52. enabled: !!fileID,
  53. })
  54. }
  55. export type SchemaTypeDefinition = {
  56. name: string
  57. schema: {
  58. properties: Record<string, any>
  59. }
  60. }
  61. export const useSchemaTypeDefinitions = () => {
  62. return useQuery<SchemaTypeDefinition[]>({
  63. queryKey: [NAME_SPACE, 'schema-type-definitions'],
  64. queryFn: () => get<SchemaTypeDefinition[]>('/spec/schema-definitions'),
  65. })
  66. }