From ab43e4da18d080ef9ad7808703456360cc150850 Mon Sep 17 00:00:00 2001 From: Bieber Date: Thu, 13 Jun 2024 22:42:30 +0700 Subject: [PATCH] chore: mark form entry for create record (#662) --- .../src/event-emitter/event-emitter.service.ts | 4 +++- apps/nestjs-backend/src/event-emitter/events/core-event.ts | 4 ++++ apps/nestjs-backend/src/features/share/share.service.ts | 4 ++++ apps/nestjs-backend/src/share-db/share-db.service.ts | 5 ----- apps/nestjs-backend/src/types/cls.ts | 5 ++++- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/nestjs-backend/src/event-emitter/event-emitter.service.ts b/apps/nestjs-backend/src/event-emitter/event-emitter.service.ts index f8d58cbd7..9800a2d9e 100644 --- a/apps/nestjs-backend/src/event-emitter/event-emitter.service.ts +++ b/apps/nestjs-backend/src/event-emitter/event-emitter.service.ts @@ -198,6 +198,7 @@ export class EventEmitterService { private createExtendPlainContext(docId: string, id: string) { const user = this.cls.get('user'); + const entry = this.cls.get('entry'); return { baseId: docId, tableId: docId, @@ -205,7 +206,8 @@ export class EventEmitterService { fieldId: id, recordId: id, context: { - user: user, + user, + entry, }, }; } diff --git a/apps/nestjs-backend/src/event-emitter/events/core-event.ts b/apps/nestjs-backend/src/event-emitter/events/core-event.ts index 2ee32073d..5daa9bae2 100644 --- a/apps/nestjs-backend/src/event-emitter/events/core-event.ts +++ b/apps/nestjs-backend/src/event-emitter/events/core-event.ts @@ -9,6 +9,10 @@ export interface IEventContext { name: string; email: string; }; + entry?: { + type: string; + id: string; + }; headers?: Record | IncomingHttpHeaders; opMeta?: { name: OpName; diff --git a/apps/nestjs-backend/src/features/share/share.service.ts b/apps/nestjs-backend/src/features/share/share.service.ts index ad484190d..87e757c9c 100644 --- a/apps/nestjs-backend/src/features/share/share.service.ts +++ b/apps/nestjs-backend/src/features/share/share.service.ts @@ -31,8 +31,10 @@ import type { import { Knex } from 'knex'; import { isEmpty, pick } from 'lodash'; import { InjectModel } from 'nest-knexjs'; +import { ClsService } from 'nestjs-cls'; import { InjectDbProvider } from '../../db-provider/db.provider'; import { IDbProvider } from '../../db-provider/db.provider.interface'; +import type { IClsStore } from '../../types/cls'; import { getFullStorageUrl } from '../../utils/full-storage-url'; import { isNotHiddenField } from '../../utils/is-not-hidden-field'; import { AggregationService } from '../aggregation/aggregation.service'; @@ -66,6 +68,7 @@ export class ShareService { private readonly recordOpenApiService: RecordOpenApiService, private readonly selectionService: SelectionService, private readonly collaboratorService: CollaboratorService, + private readonly cls: ClsService, @InjectDbProvider() private readonly dbProvider: IDbProvider, @InjectModel('CUSTOM_KNEX') private readonly knex: Knex ) {} @@ -165,6 +168,7 @@ export class ShareService { } const { records } = await this.prismaService.$tx(async () => { + this.cls.set('entry', { type: 'form', id: view.id }); return await this.recordOpenApiService.createRecords(tableId, { records: [{ fields }], fieldKeyType: FieldKeyType.Id, diff --git a/apps/nestjs-backend/src/share-db/share-db.service.ts b/apps/nestjs-backend/src/share-db/share-db.service.ts index a84dd0080..bc97b4101 100644 --- a/apps/nestjs-backend/src/share-db/share-db.service.ts +++ b/apps/nestjs-backend/src/share-db/share-db.service.ts @@ -49,14 +49,9 @@ export class ShareDbService extends ShareDBClass { // broadcast raw op events to client this.prismaService.bindAfterTransaction(() => { const rawOpMaps = this.cls.get('tx.rawOpMaps'); - const stashOpMap = this.cls.get('tx.stashOpMap'); this.cls.set('tx.rawOpMaps', undefined); - this.cls.set('tx.stashOpMap', undefined); const ops: IRawOpMap[] = []; - if (stashOpMap) { - ops.push(stashOpMap); - } if (rawOpMaps?.length) { ops.push(...rawOpMaps); } diff --git a/apps/nestjs-backend/src/types/cls.ts b/apps/nestjs-backend/src/types/cls.ts index 531e673b4..d40cf3e7a 100644 --- a/apps/nestjs-backend/src/types/cls.ts +++ b/apps/nestjs-backend/src/types/cls.ts @@ -10,12 +10,15 @@ export interface IClsStore extends ClsStore { email: string; }; accessTokenId?: string; + entry?: { + type: string; + id: string; + }; tx: { client?: Prisma.TransactionClient; timeStr?: string; id?: string; rawOpMaps?: IRawOpMap[]; - stashOpMap?: IRawOpMap; }; shareViewId?: string; permissions: PermissionAction[];