{"version":3,"file":"folders.mjs","sources":["../../../../admin/src/future/services/folders.ts"],"sourcesContent":["import { uploadApi } from './api';\n\nimport type {\n  Folder,\n  CreateFolders,\n  GetFolder,\n  GetFolders,\n} from '../../../../shared/contracts/folders';\n\nexport type FolderWithCounts = Omit<Folder, 'children' | 'files'> & {\n  children?: { count: number };\n  files?: { count: number };\n};\n\ninterface GetFoldersParams {\n  parentId?: number | null;\n}\n\nconst foldersApi = uploadApi.injectEndpoints({\n  endpoints: (builder) => ({\n    getFolders: builder.query<Folder[], GetFoldersParams | void>({\n      query: (params = {}) => {\n        const { parentId } = params as GetFoldersParams;\n\n        const queryParams: Record<string, unknown> = {};\n\n        if (parentId != null) {\n          queryParams['filters'] = {\n            $and: [{ parent: { id: parentId } }],\n          };\n        } else {\n          queryParams['filters'] = {\n            $and: [{ parent: { id: { $null: true } } }],\n          };\n        }\n\n        return {\n          url: '/upload/folders',\n          method: 'GET',\n          config: { params: queryParams },\n        };\n      },\n      transformResponse: (response: GetFolders.Response['data']) =>\n        // TODO dont want this cast\n        (response as any).data,\n      providesTags: (results) => {\n        if (results) {\n          return [\n            ...results.map(({ id }) => ({ type: 'Folder' as const, id })),\n            { type: 'Folder', id: 'LIST' },\n          ];\n        }\n        return [{ type: 'Folder', id: 'LIST' }];\n      },\n    }),\n    createFolder: builder.mutation<CreateFolders.Response['data'], CreateFolders.Request['body']>({\n      query: (body) => ({\n        url: '/upload/folders',\n        method: 'POST',\n        data: body,\n      }),\n      transformResponse: (response: CreateFolders.Response) => response.data,\n      invalidatesTags: [{ type: 'Folder', id: 'LIST' }],\n    }),\n    getFolder: builder.query<FolderWithCounts, { id: number }>({\n      query: ({ id }) => ({\n        url: `/upload/folders/${id}`,\n        method: 'GET',\n        config: {\n          params: {\n            populate: {\n              parent: {\n                populate: {\n                  parent: '*',\n                },\n              },\n              children: { count: true },\n              files: { count: true },\n            },\n          },\n        },\n      }),\n      transformResponse: (response: GetFolder.Response) =>\n        response.data as unknown as FolderWithCounts,\n      providesTags: (_result, _error, { id }) => [{ type: 'Folder', id }],\n    }),\n  }),\n});\n\nexport const { useCreateFolderMutation, useGetFoldersQuery, useGetFolderQuery } = foldersApi;\n"],"names":["foldersApi","uploadApi","injectEndpoints","endpoints","builder","getFolders","query","params","parentId","queryParams","$and","parent","id","$null","url","method","config","transformResponse","response","data","providesTags","results","map","type","createFolder","mutation","body","invalidatesTags","getFolder","populate","children","count","files","_result","_error","useCreateFolderMutation","useGetFoldersQuery","useGetFolderQuery"],"mappings":"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"}