Skip to content

Instantly share code, notes, and snippets.

@Wonder2210
Created June 22, 2020 03:01
Show Gist options
  • Save Wonder2210/bb7a0799235930f0742ae33d02591baf to your computer and use it in GitHub Desktop.
Save Wonder2210/bb7a0799235930f0742ae33d02591baf to your computer and use it in GitHub Desktop.
import {Pet,User} from '../../database/models';
import {Resolvers} from '../../__generated__/generated-types';
import {UserInputError} from 'apollo-server-express';
const resolvers : Resolvers = {
Query:{
pet:async (parent,args,ctx)=>{
const pet:Pet= await Pet.query().findById(args.id);
return pet;
},
pets: async (parent,args,ctx)=>{
const pets:Pet[]= await Pet.query();
return pets;
}
},
Pet:{
owner:async(parent,args,ctx)=>{
const {loaders:{users}} = ctx;
return users.load(parent.id);
}
},
Mutation:{
createPet:async (parent,args,ctx)=>{
let pet: Pet;
try {
pet = await Pet.query().insert({...args.pet});
} catch (error) {
throw new UserInputError("Bad user input fields required",{
invalidArgs: Object.keys(args),
});
}
return pet;
},
updatePet:async (parent,{pet:{id,...data}},ctx)=>{
const pet : Pet = await Pet.query()
.patchAndFetchById(id,data);
return pet;
},
deletePet:async (parent,args,ctx)=>{
const pet = await Pet.query().deleteById(args.id);
return "Successfully deleted"
},
}
}
export default resolvers;
import { Resolvers} from '../../__generated__/generated-types';
import {User,Pet} from '../../database/models';
import {UserInputError} from 'apollo-server-express';
interface assertion {
[key: string]:string | number ;
}
type StringIndexed<T> = T & assertion;
const resolvers : Resolvers ={
Query:{
users: async (parent,args,ctx)=>{
const users : User[] = await User.query();
return users;
},
user:async (parent,args,ctx)=>{
const user :User = await await User.query().findById(args.id);
return user;
},
},
User:{
pets:async (parent,args,ctx)=>{
const {loaders:{pets}} = ctx;
return pets.load(parent.id);
}
},
Mutation:{
createUser:async (parent,args,ctx)=>{
let user : User;
try {
user = await User.query().insert({...args.user});
} catch (error) {
console.log(error);
throw new UserInputError('Email Invalido', {
invalidArgs: Object.keys(args),
});
}
return user;
},
updateUser:async (parent,{user:{id,...data}},ctx)=>{
let user : User = await User.query().patchAndFetchById(id,data);
return user;
},
deleteUser:async (parent,args,ctx)=>{
const deleted = await User.query().deleteById(args.id);
return "Succesfull deleted";
},
}
}
export default resolvers;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment