[인스타클론코딩] [Server].25 - seeRoom & Room Fragment refactoring
by 한만섭
seeRoom.js
import { prisma } from '../../../../generated/prisma-client';
import { ROOM_FRAGMENT } from '../../../fragments';
export default {
Query: {
seeRoom: async (_, args, { request, isAuthenticated }) => {
isAuthenticated(request);
const { id } = args;
const { user } = request;
const canSee = await prisma.$exists.room({
participants_some: { id: user.id }
});
if (canSee) {
return prisma.room({ id }).$fragment(ROOM_FRAGMENT);
} else {
throw Error("you can't see this room");
}
}
}
};
-
볼수있는 방인지 판단
방의 참가자 중에 request의 user.id가 존재하는지 확인
prisma.$exists.room({ participants_some: { id: user.id } });
-
방의 모든 정보 return
ROOM_FRAGMENT에서 모든 방의 정보를 조회할 수 있음.
prisma.room({ id }).$fragment(ROOM_FRAGMENT);
-
fragment.js
export const MESSAGE_FRAGMENT = ` id text to { ${USER_FRAGMENT} } from { ${USER_FRAGMENT} } `; export const ROOM_FRAGMENT = ` fragment RoomParts on Room { id participants { ${USER_FRAGMENT} } messages { ${MESSAGE_FRAGMENT} } } `;
-
Subscribe via RSS