Skip to content

Instantly share code, notes, and snippets.

@imjakechapman
Created November 6, 2019 07:27
Show Gist options
  • Save imjakechapman/089dddf3afa739c7b869c9daea581b4a to your computer and use it in GitHub Desktop.
Save imjakechapman/089dddf3afa739c7b869c9daea581b4a to your computer and use it in GitHub Desktop.
./schema/resolvers/lastfm
import { UserInputError } from "apollo-server";
import { IResolvers } from "graphql-tools";
import merge from "lodash.merge";
// LastFM Resource Resolvers
import { AlbumsResolvers } from "./album";
import { ArtistResolver } from "./artist";
import { TrackResolver } from "./track";
import { UserResolvers } from "./user";
const LastFMRootResolver: IResolvers = {
LastFM: {
users: (_root, { user }) => {
return { user };
},
albums: (_root, { artist, album, mbid }) => {
if (mbid) {
return { options: { mbid } };
} else {
if (!artist || !album) {
throw new UserInputError(
"Must provide artist and album if mbid is not supplied"
);
} else {
return { options: { artist, album } };
}
}
},
artists: (_root, { mbid, artist }) => {
if (mbid) {
return { options: { mbid } };
} else {
if (!artist) {
throw new UserInputError(
"Must provide an artist if no mbid is supplied"
);
} else {
return { options: { artist } };
}
}
}
}
};
const LastFMResolvers: IResolvers = merge(
LastFMRootResolver,
UserResolvers,
AlbumsResolvers,
ArtistResolver,
TrackResolver
);
export { LastFMResolvers };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment