Skip to content

Instantly share code, notes, and snippets.

@unicodeveloper
Created August 18, 2017 02:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save unicodeveloper/f100a8441862a4027275a5feff0027e8 to your computer and use it in GitHub Desktop.
Save unicodeveloper/f100a8441862a4027275a5feff0027e8 to your computer and use it in GitHub Desktop.
// Let’s import our models User and Note
import { Note, User } from ‘./connector’;
import logger from ‘../config/logdna’;
// Define the resolvers
const resolvers = {
 Query: {
 // Handles Login of users
 login(_, args) {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 User.findOne({
 where: {
 email: args.email,
 password: args.password,
 },
 }).then((user) => resolve(user), () => reject(logger.warn(‘Could not fetch user with email: ‘+args.email, args)));
 });
 },
 // Handles creation of users
 createUser(_, args) {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 User.create({
 email: args.email,
 password: args.password,
 firstname: args.firstname,
 lastname: args.lastname,
 bio: args.bio,
 }).then((user) => resolve(user), () => reject(logger.warn(‘Could not create user’, args)));
 });
 },
 // Handles fetching all created users
 fetchAllUsers() {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 User.all().then((users) => resolve(users), () => reject(logger.warn(‘Could not fetch all users in the database’)));
 });
 },
 // Handles fetching the details of a particular user
 fetchUser(_, args) {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 User.find({
 where: {
 id: args.id,
 },
 }).then((user) => resolve(user), () => reject(logger.warn(‘Could not fetch user with id: ‘+args.id, args)));
 });
 },
 // Handles updating a user’s details
 updateUser(_, args) {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 User.update({
 firstname: args.firstname,
 lastname: args.lastname,
 password: args.password,
 bio: args.bio,
 }, {
 where: {
 id: args.id,
 },
 }).then((user) => resolve(user), () => reject(logger.warn(‘Could not update user with id: ‘+args.id, args)));
 });
 },
 // Handles creating noted
 createNote(_, args) {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 Note.create({
 title: args.title,
 body: args.body,
 userId: args.userId,
 }).then((note) => resolve(note), () => reject(logger.warn(‘Could not create note’, args)));
 });
 },
 // Handles fetching of a note by ID
 fetchNote(_, args) {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 Note.find({
 id: args.id,
 }).then((note) => resolve(note), () => reject(logger.warn(‘Could not fetch note with id: ‘+args.id, args)));
 });
 },
 // Handles fetching all notes
 fetchAllNotes() {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 Note.all().then((notes) => resolve(notes), () => reject(logger.warn(‘Could not fetch all the notes in the database’)));
 });
 },
 // Handles updating of a note
 updateNote(_, args) {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 Note.update({
 title: args.title,
 body: args.body,
 }, {
 where: {
 id: args.id,
 },
 }).then(note => resolve(note), () => reject(logger.warn(‘Could not update note with id: ‘+args.id, args)));
 });
 },
 // Handles deleting of note
 deleteNote(_, args) {
 return new Promise((resolve, reject) => {
 setTimeout(() => reject(logger.warn(‘Action has taken over 15secs’)), 15000);
 Note.destroy({
 where: {
 id: args.id,
 },
 }).then((note) => resolve(note), () => reject(logger.warn(‘Could not delete note with id: ‘+args.id, args)));
 });
 },
 },
 User: {
 // Fetches all notes that belongs to a user
 notes(user) {
 return user.getNotes();
 },
 },
 Note: {
 // Fetches the owner of a particular note
 user(note) {
 return note.getUser();
 },
 },
};
export default resolvers;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment