graphbrainz
Version:
A GraphQL schema, Express server, and middleware for querying the MusicBrainz.
65 lines (63 loc) • 1.53 kB
JavaScript
const imageResolvers = {
imageID: (image) => image.id,
url: (image, args) => {
return args.size === 'PREVIEW'
? image.url.replace('/fanart/', '/preview/')
: image.url;
},
likeCount: (image) => image.likes,
};
export default {
FanArtImage: {
...imageResolvers,
},
FanArtDiscImage: {
...imageResolvers,
discNumber: (image) => image.disc,
},
FanArtLabelImage: {
...imageResolvers,
color: (image) => image.colour,
},
FanArtArtist: {
backgrounds: (artist) => {
return artist.artistbackground || [];
},
thumbnails: (artist) => {
return artist.artistthumb || [];
},
logos: (artist) => {
return artist.musiclogo || [];
},
logosHD: (artist) => {
return artist.hdmusiclogo || [];
},
banners: (artist) => {
return artist.musicbanner || [];
},
},
FanArtLabel: {
logos: (label) => label.musiclabel || [],
},
FanArtAlbum: {
albumCovers: (album) => album.albumcover || [],
discImages: (album) => album.cdart || [],
},
Artist: {
fanArt: (artist, args, context) => {
return context.loaders.fanArt.load(['artist', artist.id]);
},
},
Label: {
fanArt: (label, args, context) => {
return context.loaders.fanArt.load(['label', label.id]);
},
},
ReleaseGroup: {
fanArt: (releaseGroup, args, context) => {
return context.loaders.fanArt
.load(['release-group', releaseGroup.id])
.then((artist) => artist.albums[releaseGroup.id]);
},
},
};