graphbrainz/src/queries/lookup.js
2016-11-25 17:38:32 -08:00

46 lines
1 KiB
JavaScript

import { GraphQLObjectType } from 'graphql'
import { lookupResolver } from '../resolvers'
import { mbid, toWords } from '../types/helpers'
import {
Area,
Artist,
Event,
Instrument,
Label,
Place,
Recording,
Release,
ReleaseGroup,
Series,
URL,
Work
} from '../types'
function lookupQuery (entity) {
const typeName = toWords(entity.name)
return {
type: entity,
description: `Look up a specific ${typeName} by its MBID.`,
args: { mbid },
resolve: lookupResolver()
}
}
export default new GraphQLObjectType({
name: 'LookupQuery',
description: 'A lookup of an individual MusicBrainz entity by its MBID.',
fields: {
area: lookupQuery(Area),
artist: lookupQuery(Artist),
event: lookupQuery(Event),
instrument: lookupQuery(Instrument),
label: lookupQuery(Label),
place: lookupQuery(Place),
recording: lookupQuery(Recording),
release: lookupQuery(Release),
releaseGroup: lookupQuery(ReleaseGroup),
series: lookupQuery(Series),
url: lookupQuery(URL),
work: lookupQuery(Work)
}
})