Andrew Ross
01/18/2022, 6:09 AM// see <https://www.apollographql.com/docs/tutorial/data-source/>
import { RequestOptions, RESTDataSource, Request, Response } from "apollo-datasource-rest";
//...
export class ZenApi extends RESTDataSource<Request> {
constructor() {
super();
}
baseURL = `https://${
process.env.ZEN_SUBDOMAIN || ""
}.<http://zendesk.com/api/v2/`;|zendesk.com/api/v2/`;>
// do stuff -- get post etc
async zenPostUserCreateTicket(ticketInput: ZenUserCreateTicketInput) {
return await <http://this.post|this.post><ZenSyncUserTicketOutput>('tickets', { ticketInput }).then((ticket) => ticket)
}
}
// IN THE SERVER FILE
const server = new ApolloServer({
schema,
typeDefs,
apollo as ApolloConfigInput,
playground: isProdEnvironment() === false,
dataSources: (): DataSources<object> => {
return {
zenApi: new ZenApi()
}
},
async context({ req, res }): Promise<Context> { /*return prisma in context*/}
but first try returning prisma as typeof PrismaClient in your server's context so you can access it in GraphQLContext as well as in RequestContextAlonso A.
01/18/2022, 4:45 PM