This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# prisma.yml | |
# The name of our project | |
service: graphql-server-github-auth-example | |
# Development stage on local cluster | |
stage: dev | |
cluster: local | |
# Our datamodel | |
datamodel: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# database/datamodel/types.graphql | |
type User { | |
id: ID! @unique | |
createdAt: DateTime! | |
updatedAt: DateTime! | |
githubUserId: String! @unique |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// src/github.ts | |
import * as fetch from 'isomorphic-fetch' | |
export async function getGithubToken(githubCode: string): Promise<string> { | |
const endpoint = 'https://github.com/login/oauth/access_token' | |
const data = await fetch(endpoint, { | |
method: 'POST', | |
headers: { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const authLink = new ApolloLink((operation, forward) => { | |
AsyncStorage.getItem('token').then(token => { | |
operation.setContext(({ headers = {} }) => ({ | |
headers: { | |
...headers, | |
Authorization: token ? `Bearer ${token}` : null | |
} | |
})) | |
return forward(operation) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const authLink = new ApolloLink(async (operation, forward) => { | |
const token = await AsyncStorage.getItem('token') | |
operation.setContext(({ headers = {} }) => ({ | |
headers: { | |
...headers, | |
Authorization: token ? `Bearer ${token}` : null | |
} | |
})) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# database/schema.graphql | |
type Mutation { | |
... | |
# takes two arguments(data and where) and returns a File | |
updateFile(data: FileUpdateInput!, where: FileWhereUniqueInput!): File | |
... | |
} | |
# Tells us which properties can be given to data |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// src/resolvers/Mutation/file.ts | |
export const file = { | |
renameFile: async (parent, {id, name}, ctx: Context, info) => { | |
return ctx.db.mutation.updateFile({ data: { name }, where: { id } }, info) | |
}, | |
deleteFile: async (parent, { id }, ctx: Context, info) => { | |
return await ctx.db.mutation.deleteFile({ where: { id } }, info) | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// src/files.ts | |
const data = { | |
name, | |
size, | |
secret, | |
contentType, | |
url | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// src/index.ts | |
import { Prisma } from "./generated/prisma" | |
const DATABASE_SCHEMA_PATH = './database/schema.graphql' | |
new Prisma({ | |
endpoint: process.env.PRISMA_ENDPOINT, | |
secret: process.env.PRISMA_SECRET, | |
}) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# src/schema.graphql | |
# import ID, File from "./generated/database.graphql" | |
# Everything user can read | |
type Query { | |
file(id: ID!): File # Takes id property as an argument and returns a File | |
files: [File!]! # Returns every file stored | |
} |