Skip to content

스키마 네임스페이스 매핑하기

Soonho Kwon edited this page Feb 8, 2024 · 4 revisions

정의한 스키마를 클라이언트와 서버에서 사용하기 위해서는 스키마를 네임스페이스에 매핑해주어야 합니다.

각 스키마에 매핑된 고유한 key path 이름("admin.agenda.create" 등)이 서버와 클라이언트 전역에서 해당 스키마를 사용하기 위한 고유한 키 값 입니다.

네임스페이스 정의 예시

import { mutation, subscription, namespace } from "@biseo/rpc/schema";

/* mutations */
const sendChatMutation = mutation(/* ... */);
const editChatMutation = mutation(/* ... */);
const createUserMutation = mutation(/* ... */);
const createAgendaMutation = mutation(/* ... */);

/* subscriptions */
const userSelfSubscription = subscription(/* ... */);
const chatListSubscription = subscription(/* ... */);
const agendasListSubscription = subscription(/* ... */);

const chat = namespace({
  list: chatListSubscription,
  send: sendChatMutation,
  edit: editChatMutation,
});

const user = namespace({
  me: userSelfSubscription,
  create: createUser,
});

const agenda = namespace({
  list: agendasListSubscription,
});

const admin = namespace({
  agenda: namespace({
    create: createAgenda
  }),
});

export const mutations = namespace({
  chat, 
  user,
  agenda,
  admin,
});

위와 같은 정의는 아래와 같은 네임스페이스로 매핑됩니다.

{
  "chat.list": chatListSubscription,
  "chat.send": sendChatMutation,
  "chat.edit": editChatMutation,
  "user.me": userSelfSubscription,
  "user.create": createUserMutation,
  "agenda.list": agendaListSubscription,
  "admin.agenda.create": createAgendaMutation,
}

네임스페이스별로 모듈을 분리하여 관리를 용이하게 할 수 있습니다.

@biseo/rpc documentation


Clone this wiki locally