// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema
generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
model User {
id Int @id @default(autoincrement())
firstName String
lastName String?
userName String @unique
email String @unique
password String
}
2. users 폴더, mutation, queries, typeDefs 파일들을 만든다.
3. typeDefs의 타입과 위에서 설정해준 model과 일치시킨다.
4. 한번더 migrate시킨다.
* prisma schema 를 update 할경우에는
항상 migrate 를 시켜줘야한다.
4. 계정생성과, 프로필보기위한 mutation, query 설정
import { gql } from "apollo-server";
export default gql`
type User {
id: String!
firstName: String!
lastName: String
username: String!
email: String!
createAt: String!
updatedAt: String!
}
type Mutation {
createAccount(
firstName: String!
lastName: String
username: String!
email: String!
password: String!
): User
}
type Query {
seeProfile(username: String): User
}
`;
2.. Mutation 설정하기
import client from "../client";
export default {
Mutation: {
createAccount: async (
_,
{ firstName, lastName, userName, email, password }
) => {
// check if username or email are already on DB.
const existingUser = await client.user.findFirst({
where: {
OR: [
{
userName,
},
{
email,
},
],
},
});
console.log(existingUser); //체크용
// hash password
// save and return the user
},
},
};
여기서주의해야할점은
첫번째 생성할 user가 userName과 email이 반드시 중복되면안되고
두번째 await 와 async 를 같이사용해서 비동기적으로 처리해 ( 실패에대한 처리를해야햔다.)