graphbrainz/src/types/place.js

49 lines
1.1 KiB
JavaScript
Raw Normal View History

2016-08-20 05:59:32 +00:00
import { GraphQLObjectType, GraphQLString } from 'graphql/type'
2016-08-31 06:33:29 +00:00
import { connectionDefinitions } from 'graphql-relay'
import Node from './node'
2016-08-20 05:59:32 +00:00
import Entity from './entity'
import { Degrees } from './scalars'
import Area from './area'
import {
id,
2016-08-31 06:33:29 +00:00
mbid,
2016-08-20 05:59:32 +00:00
name,
disambiguation,
lifeSpan,
events,
2016-08-31 06:33:29 +00:00
fieldWithID
2016-08-20 05:59:32 +00:00
} from './helpers'
2016-08-08 07:54:06 +00:00
2016-08-20 05:59:32 +00:00
export const Coordinates = new GraphQLObjectType({
name: 'Coordinates',
description: 'Geographic coordinates with latitude and longitude.',
fields: () => ({
latitude: { type: Degrees },
longitude: { type: Degrees }
})
})
const Place = new GraphQLObjectType({
2016-08-08 07:54:06 +00:00
name: 'Place',
description:
'A venue, studio or other place where music is performed, recorded, ' +
'engineered, etc.',
2016-08-31 06:33:29 +00:00
interfaces: () => [Node, Entity],
2016-08-08 07:54:06 +00:00
fields: () => ({
2016-08-20 05:59:32 +00:00
id,
2016-08-31 06:33:29 +00:00
mbid,
2016-08-20 05:59:32 +00:00
name,
disambiguation,
2016-08-08 07:54:06 +00:00
address: { type: GraphQLString },
2016-08-20 05:59:32 +00:00
area: { type: Area },
coordinates: { type: Coordinates },
lifeSpan,
...fieldWithID('type'),
events
2016-08-08 07:54:06 +00:00
})
})
2016-08-20 05:59:32 +00:00
2016-08-31 06:33:29 +00:00
const { connectionType: PlaceConnection } = connectionDefinitions({ nodeType: Place })
export { PlaceConnection }
2016-08-20 05:59:32 +00:00
export default Place