mirror of
https://github.com/BradNut/graphbrainz
synced 2025-09-08 17:40:32 +00:00
94 lines
2.8 KiB
JavaScript
94 lines
2.8 KiB
JavaScript
import { GraphQLObjectType, GraphQLString, GraphQLList } from 'graphql/type'
|
||
import Node from './node'
|
||
import Entity from './entity'
|
||
import { ASIN, DateType } from './scalars'
|
||
import { ReleaseStatus } from './enums'
|
||
import ReleaseEvent from './release-event'
|
||
import {
|
||
id,
|
||
mbid,
|
||
title,
|
||
disambiguation,
|
||
aliases,
|
||
artistCredit,
|
||
artistCredits,
|
||
artists,
|
||
labels,
|
||
recordings,
|
||
releaseGroups,
|
||
relationships,
|
||
tags,
|
||
fieldWithID,
|
||
resolveHyphenated,
|
||
connectionWithExtras
|
||
} from './helpers'
|
||
|
||
const Release = new GraphQLObjectType({
|
||
name: 'Release',
|
||
description: `A [release](https://musicbrainz.org/doc/Release) represents the
|
||
unique release (i.e. issuing) of a product on a specific date with specific
|
||
release information such as the country, label, barcode, packaging, etc. If you
|
||
walk into a store and purchase an album or single, they’re each represented in
|
||
MusicBrainz as one release.`,
|
||
interfaces: () => [Node, Entity],
|
||
fields: () => ({
|
||
id,
|
||
mbid,
|
||
title,
|
||
disambiguation,
|
||
aliases,
|
||
artistCredit,
|
||
artistCredits,
|
||
releaseEvents: {
|
||
type: new GraphQLList(ReleaseEvent),
|
||
description: 'The release events for this release.',
|
||
resolve: resolveHyphenated
|
||
},
|
||
date: {
|
||
type: DateType,
|
||
description: `The [release date](https://musicbrainz.org/doc/Release/Date)
|
||
is the date in which a release was made available through some sort of
|
||
distribution mechanism.`
|
||
},
|
||
country: {
|
||
type: GraphQLString,
|
||
description: 'The country in which the release was issued.'
|
||
},
|
||
asin: {
|
||
type: ASIN,
|
||
description: `The [Amazon Standard Identification Number](https://musicbrainz.org/doc/ASIN)
|
||
of the release.`
|
||
},
|
||
barcode: {
|
||
type: GraphQLString,
|
||
description: `The [barcode](https://en.wikipedia.org/wiki/Barcode), if the
|
||
release has one. The most common types found on releases are 12-digit
|
||
[UPCs](https://en.wikipedia.org/wiki/Universal_Product_Code) and 13-digit
|
||
[EANs](https://en.wikipedia.org/wiki/International_Article_Number).`
|
||
},
|
||
...fieldWithID('status', {
|
||
type: ReleaseStatus,
|
||
description: 'The status describes how “official” a release is.'
|
||
}),
|
||
...fieldWithID('packaging', {
|
||
description: `The physical packaging that accompanies the release. See
|
||
the [list of packaging](https://musicbrainz.org/doc/Release/Packaging) for more
|
||
information.`
|
||
}),
|
||
quality: {
|
||
type: GraphQLString,
|
||
description: `Data quality indicates how good the data for a release is.
|
||
It is not a mark of how good or bad the music itself is – for that, use
|
||
[ratings](https://musicbrainz.org/doc/Rating_System).`
|
||
},
|
||
artists,
|
||
labels,
|
||
recordings,
|
||
releaseGroups,
|
||
relationships,
|
||
tags
|
||
})
|
||
})
|
||
|
||
export const ReleaseConnection = connectionWithExtras(Release)
|
||
export default Release
|