Instagram-clone#6-Chat

Seo·2020년 5월 31일
0

InastagramClone

목록 보기
6/15

Message를 주고받는 chat기능을 만들어보자.

📄 Data model

  • Room
  • Message

Room

from user, to user, messages가 있고 메신져 역할을 하는 모델

Messages

message를 관리하는 모델. message text, room id 가 있다.

📍 Process

  1. 로그인된 유저가 to user에게 message를 보낸다.
  2. room 정보를 가져온다.
    2-1. 로그인된 유저와 to user가 참여하는 room이 없을 경우
    2-1-1. from user, to user와 message를 넣은 신규 room을 생성하고 가져온다.
    2-2. 로그인된 유저와 to user가 참여하는 room이 있을 경우
    2-2-1. 해당하는 room 정보 가져온다.
  3. 가져온 room 정보를 가진 신규 message를 생성한다.
Mutation: {
  sendMessage: async (_, args, { request, isAuthenticated }) => {
    isAuthenticated(request);
    const { user } = request;
    const { roomId, message, toId } = args;
    let room;
    if (roomId === undefined) {
      if (user.id !== toId) {
        room = await prisma.createRoom({data:...});
      }
    } else {
      room = await prisma.room({ id: roomId });
    }
    if (!room) {
      throw Error("Room not found");
    }
    return await prisma.createMessage({
      ...
    });
  },
},
profile
개발관심자

0개의 댓글