diff --git a/packages/frontend-2/lib/common/generated/gql/graphql.ts b/packages/frontend-2/lib/common/generated/gql/graphql.ts index e7583ed43..c889e16af 100644 --- a/packages/frontend-2/lib/common/generated/gql/graphql.ts +++ b/packages/frontend-2/lib/common/generated/gql/graphql.ts @@ -2444,7 +2444,7 @@ export type ProjectWebhooksArgs = { export type ProjectAccSyncItemsUpdatedMessage = { __typename?: 'ProjectAccSyncItemsUpdatedMessage'; accSyncItem?: Maybe; - lineageUrn: Scalars['String']['output']; + id: Scalars['String']['output']; type: ProjectAccSyncItemsUpdatedMessageType; }; @@ -9121,7 +9121,7 @@ export type ProjectFieldArgs = { } export type ProjectAccSyncItemsUpdatedMessageFieldArgs = { accSyncItem: {}, - lineageUrn: {}, + id: {}, type: {}, } export type ProjectAccessRequestFieldArgs = { diff --git a/packages/server/assets/acc/typedefs/accSyncItems.graphql b/packages/server/assets/acc/typedefs/accSyncItems.graphql index 7798e6227..1152b6dc0 100644 --- a/packages/server/assets/acc/typedefs/accSyncItems.graphql +++ b/packages/server/assets/acc/typedefs/accSyncItems.graphql @@ -84,7 +84,7 @@ enum ProjectAccSyncItemsUpdatedMessageType { type ProjectAccSyncItemsUpdatedMessage { type: ProjectAccSyncItemsUpdatedMessageType! - lineageUrn: String! + id: String! accSyncItem: AccSyncItem } diff --git a/packages/server/modules/acc/domain/events.ts b/packages/server/modules/acc/domain/events.ts index 4b8999011..7a76eee58 100644 --- a/packages/server/modules/acc/domain/events.ts +++ b/packages/server/modules/acc/domain/events.ts @@ -1,8 +1,4 @@ import type { AccSyncItem } from '@/modules/acc/domain/types' -import type { - DeleteAccSyncItemInput, - UpdateAccSyncItemInput -} from '@/modules/core/graph/generated/graphql' export const accSyncItemEventsNamespace = 'accSyncItems' as const @@ -22,12 +18,10 @@ export type AccSyncItemEventsPayloads = { newSyncItem: AccSyncItem projectId: string userId?: string - input: UpdateAccSyncItemInput } [AccSyncItemEvents.Deleted]: { - syncItem: AccSyncItem + id: string projectId: string userId?: string - input: DeleteAccSyncItemInput } } diff --git a/packages/server/modules/acc/events/eventListeners.ts b/packages/server/modules/acc/events/eventListeners.ts index 60a14cba3..08d51c636 100644 --- a/packages/server/modules/acc/events/eventListeners.ts +++ b/packages/server/modules/acc/events/eventListeners.ts @@ -12,7 +12,7 @@ export const reportAccSyncItemCreatedFactory = projectId, projectAccSyncItemsUpdated: { type: 'CREATED', - lineageUrn: syncItem.accFileLineageUrn, + id: syncItem.id, accSyncItem: syncItem } }) @@ -27,7 +27,7 @@ export const reportAccSyncItemUpdatedFactory = projectId, projectAccSyncItemsUpdated: { type: 'UPDATED', - lineageUrn: newSyncItem.accFileLineageUrn, + id: newSyncItem.id, accSyncItem: newSyncItem } }) @@ -36,13 +36,13 @@ export const reportAccSyncItemUpdatedFactory = export const reportAccSyncItemDeletedFactory = (deps: { publish: PublishSubscription }) => async (payload: EventPayload) => { - const { projectId, syncItem } = payload.payload + const { projectId, id } = payload.payload await deps.publish(ProjectSubscriptions.ProjectAccSyncItemUpdated, { projectId, projectAccSyncItemsUpdated: { type: 'DELETED', - lineageUrn: syncItem.accFileLineageUrn, + id, accSyncItem: null } }) diff --git a/packages/server/modules/acc/graph/resolvers/accSyncItems.ts b/packages/server/modules/acc/graph/resolvers/accSyncItems.ts index 799df53f5..abbe0b255 100644 --- a/packages/server/modules/acc/graph/resolvers/accSyncItems.ts +++ b/packages/server/modules/acc/graph/resolvers/accSyncItems.ts @@ -137,7 +137,8 @@ const resolvers: Resolvers = { return await updateAccSyncItemFactory({ getAccSyncItemById: getAccSyncItemByIdFactory({ db }), - upsertAccSyncItem: upsertAccSyncItemFactory({ db }) + upsertAccSyncItem: upsertAccSyncItemFactory({ db }), + eventEmit: getEventBus().emit })({ syncItem: input }) @@ -152,9 +153,11 @@ const resolvers: Resolvers = { }) await deleteAccSyncItemFactory({ - deleteAccSyncItemById: deleteAccSyncItemByIdFactory({ db }) + deleteAccSyncItemById: deleteAccSyncItemByIdFactory({ db }), + eventEmit: getEventBus().emit })({ - id: input.id + id: input.id, + projectId: input.projectId }) return true diff --git a/packages/server/modules/acc/services/management.ts b/packages/server/modules/acc/services/management.ts index 0bc555f6c..7240b5fc5 100644 --- a/packages/server/modules/acc/services/management.ts +++ b/packages/server/modules/acc/services/management.ts @@ -198,6 +198,7 @@ export const updateAccSyncItemFactory = (deps: { getAccSyncItemById: GetAccSyncItemById upsertAccSyncItem: UpsertAccSyncItem + eventEmit: EventBusEmit }): UpdateAccSyncItem => async ({ syncItem }) => { const existingSyncItem = await deps.getAccSyncItemById({ @@ -216,17 +217,40 @@ export const updateAccSyncItemFactory = await deps.upsertAccSyncItem(newSyncItem) + await deps.eventEmit({ + eventName: AccSyncItemEvents.Updated, + payload: { + oldSyncItem: existingSyncItem, + newSyncItem, + projectId: newSyncItem.projectId + } + }) + return newSyncItem } -export type DeleteAccSyncItem = (params: { id: string }) => Promise +export type DeleteAccSyncItem = (params: { + id: string + projectId: string +}) => Promise export const deleteAccSyncItemFactory = - (deps: { deleteAccSyncItemById: DeleteAccSyncItemById }): DeleteAccSyncItem => - async ({ id }) => { + (deps: { + deleteAccSyncItemById: DeleteAccSyncItemById + eventEmit: EventBusEmit + }): DeleteAccSyncItem => + async ({ id, projectId }) => { const itemCount = await deps.deleteAccSyncItemById({ id }) if (itemCount === 0) { throw new SyncItemNotFoundError() } + + await deps.eventEmit({ + eventName: AccSyncItemEvents.Deleted, + payload: { + id, + projectId + } + }) } diff --git a/packages/server/modules/core/graph/generated/graphql.ts b/packages/server/modules/core/graph/generated/graphql.ts index c9f7a74bf..a396f84e3 100644 --- a/packages/server/modules/core/graph/generated/graphql.ts +++ b/packages/server/modules/core/graph/generated/graphql.ts @@ -2469,7 +2469,7 @@ export type ProjectWebhooksArgs = { export type ProjectAccSyncItemsUpdatedMessage = { __typename?: 'ProjectAccSyncItemsUpdatedMessage'; accSyncItem?: Maybe; - lineageUrn: Scalars['String']['output']; + id: Scalars['String']['output']; type: ProjectAccSyncItemsUpdatedMessageType; }; @@ -7192,7 +7192,7 @@ export type ProjectResolvers = { accSyncItem?: Resolver, ParentType, ContextType>; - lineageUrn?: Resolver; + id?: Resolver; type?: Resolver; __isTypeOf?: IsTypeOfResolverFn; };