From 5d5b156536f55a9b38a9edd1bf7f70bb5937d22d Mon Sep 17 00:00:00 2001 From: David Thyresson Date: Thu, 29 Jun 2023 20:32:42 -0400 Subject: [PATCH] chore: RedwoodJS GraphQL subscription templates now use Dynamic Topic IDs (#8766) * Update pub sub types to send dynamic id * Updates realtime channel type * Fix type --- .../commands/experimental/templates/realtime.ts.template | 4 ++-- .../subscriptions/blank/blank.service.ts.template | 2 +- .../templates/subscriptions/blank/blank.ts.template | 8 ++++---- .../subscriptions/newMessage/newMessage.ts.template | 6 +++--- .../templates/subscriptions/newMessage/rooms.ts.template | 2 +- 5 files changed, 11 insertions(+), 11 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() 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..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,9 +8,9 @@ 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 PubSubChannels = ExistingChannel & Publish${typeName}Channel +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 }