mirror of
https://github.com/jeffvli/feishin.git
synced 2026-06-16 08:24:16 +02:00
add musicbrainz artist query
This commit is contained in:
@@ -270,6 +270,10 @@ export const queryKeys: Record<
|
|||||||
},
|
},
|
||||||
root: (serverId: string) => [serverId, 'genres'] as const,
|
root: (serverId: string) => [serverId, 'genres'] as const,
|
||||||
},
|
},
|
||||||
|
musicbrainz: {
|
||||||
|
artist: (mbzArtistId: string) => ['musicbrainz', 'artist', mbzArtistId] as const,
|
||||||
|
root: () => ['musicbrainz'] as const,
|
||||||
|
},
|
||||||
musicFolders: {
|
musicFolders: {
|
||||||
list: (serverId: string) => [serverId, 'musicFolders', 'list'] as const,
|
list: (serverId: string) => [serverId, 'musicFolders', 'list'] as const,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
import { queryOptions } from '@tanstack/react-query';
|
||||||
|
import { MusicBrainzApi } from 'musicbrainz-api';
|
||||||
|
|
||||||
|
import packageJson from '../../../../../package.json';
|
||||||
|
|
||||||
|
import { queryKeys } from '/@/renderer/api/query-keys';
|
||||||
|
|
||||||
|
export const musicbrainzApi = new MusicBrainzApi({
|
||||||
|
appContactInfo: packageJson.homepage,
|
||||||
|
appName: packageJson.name,
|
||||||
|
appVersion: packageJson.version,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Cache all musicbrainz api results for 5 minutes
|
||||||
|
const CACHE_TIME = 1000 * 60 * 5;
|
||||||
|
|
||||||
|
export const musicbrainzQueries = {
|
||||||
|
artist: (args: { mbzArtistId: string }) => {
|
||||||
|
return queryOptions({
|
||||||
|
gcTime: CACHE_TIME,
|
||||||
|
queryFn: () =>
|
||||||
|
musicbrainzApi.lookup('artist', args.mbzArtistId, [
|
||||||
|
'releases',
|
||||||
|
'recordings',
|
||||||
|
'release-groups',
|
||||||
|
'works',
|
||||||
|
'media',
|
||||||
|
]),
|
||||||
|
queryKey: queryKeys.musicbrainz.artist(args.mbzArtistId),
|
||||||
|
staleTime: CACHE_TIME,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user