5e8fbc7c5c
- Adds a log section to settings serverless functions test tab <img width="1303" height="827" alt="image" src="https://github.com/user-attachments/assets/2ce70558-91bc-4cfc-aced-42ac9e0226bf" /> - Adds a new subscription endpoint to graphql api `serverlessFunctionLogs` that that emit function logs - Adds a new command `twenty app logs` to `twenty-sdk` to watch logs in terminal <img width="1109" height="182" alt="image" src="https://github.com/user-attachments/assets/2e874060-e99d-4978-ab9c-c91e52cb7478" /> <img width="1061" height="176" alt="image" src="https://github.com/user-attachments/assets/1f533e32-7435-4d7b-89c6-d1154816a8ab" /> - add new version for create-twenty-app and twenty-sdk `0.1.3`
37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import { Inject, Injectable } from '@nestjs/common';
|
|
|
|
import { RedisPubSub } from 'graphql-redis-subscriptions';
|
|
|
|
import { type ObjectRecordEvent } from 'src/engine/core-modules/event-emitter/types/object-record-event.event';
|
|
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/types/workspace-event-batch.type';
|
|
import { transformEventToWebhookEvent } from 'src/engine/core-modules/webhook/utils/transform-event-to-webhook-event';
|
|
import { ON_DB_EVENT_TRIGGER } from 'src/engine/subscriptions/constants/on-db-event-trigger';
|
|
|
|
@Injectable()
|
|
export class SubscriptionsService {
|
|
constructor(@Inject('PUB_SUB') private readonly pubSub: RedisPubSub) {}
|
|
|
|
async publish(
|
|
workspaceEventBatch: WorkspaceEventBatch<ObjectRecordEvent>,
|
|
): Promise<void> {
|
|
const [nameSingular, operation] = workspaceEventBatch.name.split('.');
|
|
|
|
for (const eventData of workspaceEventBatch.events) {
|
|
const { record, updatedFields } = transformEventToWebhookEvent({
|
|
eventName: workspaceEventBatch.name,
|
|
event: eventData,
|
|
});
|
|
|
|
await this.pubSub.publish(ON_DB_EVENT_TRIGGER, {
|
|
onDbEvent: {
|
|
action: operation,
|
|
objectNameSingular: nameSingular,
|
|
eventDate: new Date(),
|
|
record,
|
|
...(updatedFields && { updatedFields }),
|
|
},
|
|
});
|
|
}
|
|
}
|
|
}
|