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:
Weiko
2024-06-11 18:53:28 +02:00
committed by GitHub
parent 64b8e4ec4d
commit be96c68416
60 changed files with 2134 additions and 443 deletions

View File

@ -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,
);
}
}