import { queryOptions } from '@tanstack/react-query'; import { api } from '/@/renderer/api'; import { queryKeys } from '/@/renderer/api/query-keys'; import { QueryHookArgs } from '/@/renderer/lib/react-query'; import { PlaylistDetailQuery, PlaylistListQuery, PlaylistSongListQuery, } from '/@/shared/types/domain-types'; export const playlistsQueries = { detail: (args: QueryHookArgs) => { return queryOptions({ queryFn: ({ signal }) => { return api.controller.getPlaylistDetail({ apiClientProps: { serverId: args.serverId, signal }, query: args.query, }); }, queryKey: queryKeys.playlists.detail(args.serverId, args.query.id, args.query), ...args.options, }); }, list: (args: QueryHookArgs) => { return queryOptions({ gcTime: 1000 * 60 * 60, queryFn: ({ signal }) => { return api.controller.getPlaylistList({ apiClientProps: { serverId: args.serverId, signal }, query: args.query, }); }, queryKey: queryKeys.playlists.list(args.serverId || '', args.query), ...args.options, }); }, songList: (args: QueryHookArgs) => { return queryOptions({ queryFn: ({ signal }) => { return api.controller.getPlaylistSongList({ apiClientProps: { serverId: args.serverId, signal }, query: args.query, }); }, queryKey: queryKeys.playlists.songList(args.serverId || '', args.query.id), ...args.options, }); }, };