use-operation-log.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * Operation Log API Hooks
  3. */
  4. import { get } from '@/service/base'
  5. import type {
  6. OperationLogListResponse,
  7. OperationLogQueryParams,
  8. } from '@/models/operation-log'
  9. import { useQuery } from '@tanstack/react-query'
  10. const NAME_SPACE = 'operation-log'
  11. // Query Keys
  12. export const useOperationLogListKey = (
  13. datasetId: string,
  14. documentId?: string,
  15. params?: OperationLogQueryParams,
  16. ) => {
  17. return [NAME_SPACE, 'list', datasetId, documentId, params]
  18. }
  19. // Queries
  20. /**
  21. * Get operation logs for a specific document
  22. */
  23. export const useDocumentOperationLogs = (
  24. datasetId: string,
  25. documentId: string,
  26. params?: OperationLogQueryParams,
  27. ) => {
  28. return useQuery({
  29. queryKey: useOperationLogListKey(datasetId, documentId, params),
  30. queryFn: () => {
  31. const queryParams = new URLSearchParams()
  32. if (params?.action)
  33. queryParams.append('action', params.action)
  34. if (params?.start_date)
  35. queryParams.append('start_date', params.start_date)
  36. if (params?.end_date)
  37. queryParams.append('end_date', params.end_date)
  38. if (params?.page)
  39. queryParams.append('page', params.page.toString())
  40. if (params?.per_page)
  41. queryParams.append('per_page', params.per_page.toString())
  42. return get<OperationLogListResponse>(
  43. `/datasets/${datasetId}/documents/${documentId}/operation-logs?${queryParams.toString()}`,
  44. )
  45. },
  46. enabled: !!(datasetId && documentId),
  47. })
  48. }
  49. /**
  50. * Get operation logs for an entire dataset
  51. */
  52. export const useDatasetOperationLogs = (
  53. datasetId: string,
  54. params?: OperationLogQueryParams,
  55. ) => {
  56. return useQuery({
  57. queryKey: useOperationLogListKey(datasetId, undefined, params),
  58. queryFn: () => {
  59. const queryParams = new URLSearchParams()
  60. if (params?.resource_type)
  61. queryParams.append('resource_type', params.resource_type)
  62. if (params?.action)
  63. queryParams.append('action', params.action)
  64. if (params?.start_date)
  65. queryParams.append('start_date', params.start_date)
  66. if (params?.end_date)
  67. queryParams.append('end_date', params.end_date)
  68. if (params?.page)
  69. queryParams.append('page', params.page.toString())
  70. if (params?.per_page)
  71. queryParams.append('per_page', params.per_page.toString())
  72. return get<OperationLogListResponse>(
  73. `/datasets/${datasetId}/operation-logs?${queryParams.toString()}`,
  74. )
  75. },
  76. enabled: !!datasetId,
  77. })
  78. }