From b24e79f0f15033ef2ee2789f0e2cbb4ac739a39b Mon Sep 17 00:00:00 2001 From: David Thyresson Date: Wed, 28 Jun 2023 16:51:43 -0400 Subject: [PATCH 1/3] Update pub sub types to send dynamic id --- .../templates/subscriptions/blank/blank.service.ts.template | 2 +- .../templates/subscriptions/blank/blank.ts.template | 6 +++--- .../subscriptions/newMessage/newMessage.ts.template | 6 +++--- .../templates/subscriptions/newMessage/rooms.ts.template | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.service.ts.template b/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.service.ts.template index 2541a681bd1c..816e650c16b5 100644 --- a/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.service.ts.template +++ b/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.service.ts.template @@ -13,7 +13,7 @@ export const ${subscriptionServiceResolver} = async ( const { id, from, body } = input - context.pubSub.publish(`${typeName}:<%= '$' %>{id}`, { from, body }) +context.pubSub.publish('${typeName}', id, { from, body }) return input } diff --git a/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.ts.template b/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.ts.template index 0d5ff9b66d7b..bc674585d63c 100644 --- a/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.ts.template +++ b/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.ts.template @@ -9,8 +9,8 @@ export const schema = gql` ` // Be sure to import this type and then in `api/src/lib/realtime.ts` extend PubSubChannels: // export type PubSubChannels = ExistingChannel & Publish${typeName}Channel -export type Publish${typeName}Channel = { - [Key in `${typeName}:<%= '$' %>{T}`]: [payload: { from: string; body: string }] +export type Publish${typeName}Channel = { + ${typeName}: [id: string, payload: { from: string; body: string }] } /** @@ -38,7 +38,7 @@ const ${subscriptionName}Subscription = { subscribe: (_, { id }, { pubSub }) => { logger.debug({ id }, '${name} subscription') - return pubSub.subscribe(`${typeName}:<%= '$' %>{id}`) + return pubSub.subscribe('${typeName}', id) }, resolve: (payload) => { logger.debug({ payload }, '${name} subscription resolve') diff --git a/packages/cli/src/commands/experimental/templates/subscriptions/newMessage/newMessage.ts.template b/packages/cli/src/commands/experimental/templates/subscriptions/newMessage/newMessage.ts.template index a4b578459e18..e54522e7efcd 100644 --- a/packages/cli/src/commands/experimental/templates/subscriptions/newMessage/newMessage.ts.template +++ b/packages/cli/src/commands/experimental/templates/subscriptions/newMessage/newMessage.ts.template @@ -7,8 +7,8 @@ export const schema = gql` newMessage(roomId: ID!): Message! } ` -export type NewMessageChannel = { - [Key in `newMessage:${T}`]: [payload: { from: string; body: string }] +export type NewMessageChannel = { + newMessage: [roomId: string, payload: { from: string; body: string }] } /** @@ -36,7 +36,7 @@ const newMessage = { subscribe: (_, { roomId }, { pubSub }) => { logger.debug({ roomId }, 'newMessage subscription') - return pubSub.subscribe(`newMessage:${roomId}`) + return pubSub.subscribe('newMessage', roomId) }, resolve: (payload) => { logger.debug({ payload }, 'newMessage subscription resolve') diff --git a/packages/cli/src/commands/experimental/templates/subscriptions/newMessage/rooms.ts.template b/packages/cli/src/commands/experimental/templates/subscriptions/newMessage/rooms.ts.template index c5e8c78feacf..5a7d4e0f2b97 100644 --- a/packages/cli/src/commands/experimental/templates/subscriptions/newMessage/rooms.ts.template +++ b/packages/cli/src/commands/experimental/templates/subscriptions/newMessage/rooms.ts.template @@ -13,7 +13,7 @@ export const sendMessage = async ( const { roomId, from, body } = input - context.pubSub.publish(`newMessage:${roomId}`, { from, body }) + context.pubSub.publish('newMessage', roomId, { from, body }) return input } From db6db1ef7925fa7811836f10119702cd06f694db Mon Sep 17 00:00:00 2001 From: David Thyresson Date: Wed, 28 Jun 2023 17:18:14 -0400 Subject: [PATCH 2/3] Updates realtime channel type --- .../src/commands/experimental/templates/realtime.ts.template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/commands/experimental/templates/realtime.ts.template b/packages/cli/src/commands/experimental/templates/realtime.ts.template index 5fd8181d951f..eb30014f0dc6 100644 --- a/packages/cli/src/commands/experimental/templates/realtime.ts.template +++ b/packages/cli/src/commands/experimental/templates/realtime.ts.template @@ -6,8 +6,8 @@ export const liveQueryStore = new InMemoryLiveQueryStore() // Note: If you did not setup examples, please replace with your current subscriptions import type { NewMessageChannel } from 'src/subscriptions/newMessage/newMessage' -// then use merge the types by intersecting each like: `NewMessageChannel & OtherChannel` -export type PubSubChannels = NewMessageChannel +// then use merge the types by intersecting each like: `NewMessageChannel & OtherChannel` +export type PubSubChannels = NewMessageChannel export const pubSub = createPubSub() From 28c2c829687066c098885f0745e5de011fa62318 Mon Sep 17 00:00:00 2001 From: David Thyresson Date: Thu, 29 Jun 2023 10:04:49 -0400 Subject: [PATCH 3/3] Fix type --- .../templates/subscriptions/blank/blank.ts.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.ts.template b/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.ts.template index bc674585d63c..9dc7b7ffa7c9 100644 --- a/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.ts.template +++ b/packages/cli/src/commands/experimental/templates/subscriptions/blank/blank.ts.template @@ -8,7 +8,7 @@ export const schema = gql` } ` // Be sure to import this type and then in `api/src/lib/realtime.ts` extend PubSubChannels: -// export type PubSubChannels = ExistingChannel & Publish${typeName}Channel +// export type PubSubChannels = ExistingChannel & Publish${typeName}Channel export type Publish${typeName}Channel = { ${typeName}: [id: string, payload: { from: string; body: string }] }