POC timeline activity (#5697)
TODO: - remove WorkspaceIsNotAuditLogged decorators on activity/activityTarget to log task/note creations - handle attachments - fix css and remove unnecessary styled components or duplicates
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
|
||||
import { EntityManager } from 'typeorm';
|
||||
|
||||
import { WorkspaceDataSourceService } from 'src/engine/workspace-datasource/workspace-datasource.service';
|
||||
import { objectRecordDiffMerge } from 'src/engine/integrations/event-emitter/utils/object-record-diff-merge';
|
||||
|
||||
@ -74,17 +76,15 @@ export class TimelineActivityRepository {
|
||||
return this.workspaceDataSourceService.executeRawQuery(
|
||||
`SELECT * FROM ${dataSourceSchema}."timelineActivity"
|
||||
WHERE "${objectName}Id" = $1
|
||||
AND ("name" = $2 OR "name" = $3)
|
||||
AND "workspaceMemberId" = $4
|
||||
AND "linkedRecordId" = $5
|
||||
AND "name" = $2
|
||||
AND "workspaceMemberId" = $3
|
||||
AND ${
|
||||
linkedRecordId ? `"linkedRecordId" = $4` : `"linkedRecordId" IS NULL`
|
||||
}
|
||||
AND "createdAt" >= NOW() - interval '10 minutes'`,
|
||||
[
|
||||
recordId,
|
||||
name,
|
||||
name.replace(/\.updated$/, '.created'),
|
||||
workspaceMemberId,
|
||||
linkedRecordId,
|
||||
],
|
||||
linkedRecordId
|
||||
? [recordId, name, workspaceMemberId, linkedRecordId]
|
||||
: [recordId, name, workspaceMemberId],
|
||||
workspaceId,
|
||||
);
|
||||
}
|
||||
@ -133,4 +133,52 @@ export class TimelineActivityRepository {
|
||||
workspaceId,
|
||||
);
|
||||
}
|
||||
|
||||
public async insertTimelineActivitiesForObject(
|
||||
objectName: string,
|
||||
activities: {
|
||||
name: string;
|
||||
properties: Record<string, any> | null;
|
||||
workspaceMemberId: string | undefined;
|
||||
recordId: string;
|
||||
linkedRecordCachedName: string;
|
||||
linkedRecordId: string | undefined;
|
||||
linkedObjectMetadataId: string | undefined;
|
||||
}[],
|
||||
workspaceId: string,
|
||||
transactionManager?: EntityManager,
|
||||
) {
|
||||
if (activities.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const dataSourceSchema =
|
||||
this.workspaceDataSourceService.getSchemaName(workspaceId);
|
||||
|
||||
return this.workspaceDataSourceService.executeRawQuery(
|
||||
`INSERT INTO ${dataSourceSchema}."timelineActivity"
|
||||
("name", "properties", "workspaceMemberId", "${objectName}Id", "linkedRecordCachedName", "linkedRecordId", "linkedObjectMetadataId")
|
||||
VALUES ${activities
|
||||
.map(
|
||||
(_, index) =>
|
||||
`($${index * 7 + 1}, $${index * 7 + 2}, $${index * 7 + 3}, $${
|
||||
index * 7 + 4
|
||||
}, $${index * 7 + 5}, $${index * 7 + 6}, $${index * 7 + 7})`,
|
||||
)
|
||||
.join(',')}`,
|
||||
activities
|
||||
.map((activity) => [
|
||||
activity.name,
|
||||
activity.properties,
|
||||
activity.workspaceMemberId,
|
||||
activity.recordId,
|
||||
activity.linkedRecordCachedName ?? '',
|
||||
activity.linkedRecordId,
|
||||
activity.linkedObjectMetadataId,
|
||||
])
|
||||
.flat(),
|
||||
workspaceId,
|
||||
transactionManager,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user