@n8n/db 1.35.2 → 1.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.tsbuildinfo +1 -1
- package/dist/connection/db-connection-monitor.d.ts +2 -0
- package/dist/connection/db-connection-monitor.js +33 -25
- package/dist/connection/db-connection-monitor.js.map +1 -1
- package/dist/entities/index.d.ts +7 -1
- package/dist/entities/index.js +11 -2
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/poller-state.d.ts +9 -0
- package/dist/entities/poller-state.js +41 -0
- package/dist/entities/poller-state.js.map +1 -0
- package/dist/entities/workflow-review-activity-comment.ee.d.ts +11 -0
- package/dist/entities/workflow-review-activity-comment.ee.js +50 -0
- package/dist/entities/workflow-review-activity-comment.ee.js.map +1 -0
- package/dist/entities/workflow-review-activity.ee.d.ts +12 -0
- package/dist/entities/workflow-review-activity.ee.js +50 -0
- package/dist/entities/workflow-review-activity.ee.js.map +1 -0
- package/dist/entities/workflow-review-request-author.ee.js +2 -1
- package/dist/entities/workflow-review-request-author.ee.js.map +1 -1
- package/dist/entities/workflow-review-request-workflow.ee.d.ts +1 -0
- package/dist/entities/workflow-review-request-workflow.ee.js +4 -0
- package/dist/entities/workflow-review-request-workflow.ee.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations/common/1785843640527-CreateWorkflowReviewActivityTablesAndBaseline.d.ts +11 -0
- package/dist/migrations/common/1785843640527-CreateWorkflowReviewActivityTablesAndBaseline.js +102 -0
- package/dist/migrations/common/1785843640527-CreateWorkflowReviewActivityTablesAndBaseline.js.map +1 -0
- package/dist/migrations/common/1785926660580-CreatePollerStateTable.d.ts +5 -0
- package/dist/migrations/common/1785926660580-CreatePollerStateTable.js +26 -0
- package/dist/migrations/common/1785926660580-CreatePollerStateTable.js.map +1 -0
- package/dist/migrations/common/1786666615643-AddCoalesceOwnerMisfirePolicy.d.ts +10 -0
- package/dist/migrations/common/1786666615643-AddCoalesceOwnerMisfirePolicy.js +55 -0
- package/dist/migrations/common/1786666615643-AddCoalesceOwnerMisfirePolicy.js.map +1 -0
- package/dist/migrations/postgresdb/index.js +7 -1
- package/dist/migrations/postgresdb/index.js.map +1 -1
- package/dist/migrations/sqlite/1786666615643-AddCoalesceOwnerMisfirePolicy.d.ts +4 -0
- package/dist/migrations/sqlite/1786666615643-AddCoalesceOwnerMisfirePolicy.js +12 -0
- package/dist/migrations/sqlite/1786666615643-AddCoalesceOwnerMisfirePolicy.js.map +1 -0
- package/dist/migrations/sqlite/index.js +7 -1
- package/dist/migrations/sqlite/index.js.map +1 -1
- package/dist/repositories/base-repository.d.ts +5 -2
- package/dist/repositories/base-repository.js +7 -0
- package/dist/repositories/base-repository.js.map +1 -1
- package/dist/repositories/credentials.repository.d.ts +9 -15
- package/dist/repositories/credentials.repository.js +17 -17
- package/dist/repositories/credentials.repository.js.map +1 -1
- package/dist/repositories/execution.repository.d.ts +5 -3
- package/dist/repositories/execution.repository.js +6 -4
- package/dist/repositories/execution.repository.js.map +1 -1
- package/dist/repositories/folder.repository.d.ts +0 -1
- package/dist/repositories/folder.repository.js +3 -6
- package/dist/repositories/folder.repository.js.map +1 -1
- package/dist/repositories/index.d.ts +4 -1
- package/dist/repositories/index.js +8 -2
- package/dist/repositories/index.js.map +1 -1
- package/dist/repositories/instance-credential-assignment.repository.d.ts +2 -1
- package/dist/repositories/instance-credential-assignment.repository.js +4 -3
- package/dist/repositories/instance-credential-assignment.repository.js.map +1 -1
- package/dist/repositories/poller-state.repository.d.ts +19 -0
- package/dist/repositories/poller-state.repository.js +107 -0
- package/dist/repositories/poller-state.repository.js.map +1 -0
- package/dist/repositories/scheduled-task.repository.d.ts +1 -0
- package/dist/repositories/scheduled-task.repository.js +2 -0
- package/dist/repositories/scheduled-task.repository.js.map +1 -1
- package/dist/repositories/settings.repository.d.ts +3 -1
- package/dist/repositories/settings.repository.js +15 -3
- package/dist/repositories/settings.repository.js.map +1 -1
- package/dist/repositories/shared-workflow.repository.d.ts +2 -2
- package/dist/repositories/shared-workflow.repository.js +4 -3
- package/dist/repositories/shared-workflow.repository.js.map +1 -1
- package/dist/repositories/tag.repository.d.ts +2 -1
- package/dist/repositories/tag.repository.js +4 -3
- package/dist/repositories/tag.repository.js.map +1 -1
- package/dist/repositories/workflow-history.repository.d.ts +2 -1
- package/dist/repositories/workflow-history.repository.js +4 -3
- package/dist/repositories/workflow-history.repository.js.map +1 -1
- package/dist/repositories/workflow-review-activity-comment.repository.d.ts +12 -0
- package/dist/repositories/workflow-review-activity-comment.repository.js +32 -0
- package/dist/repositories/workflow-review-activity-comment.repository.js.map +1 -0
- package/dist/repositories/workflow-review-activity.repository.d.ts +43 -0
- package/dist/repositories/workflow-review-activity.repository.js +68 -0
- package/dist/repositories/workflow-review-activity.repository.js.map +1 -0
- package/dist/repositories/workflow-review-request-author.repository.d.ts +2 -2
- package/dist/repositories/workflow-review-request-author.repository.js +4 -3
- package/dist/repositories/workflow-review-request-author.repository.js.map +1 -1
- package/dist/repositories/workflow-review-request-reviewer.repository.d.ts +6 -2
- package/dist/repositories/workflow-review-request-reviewer.repository.js +10 -3
- package/dist/repositories/workflow-review-request-reviewer.repository.js.map +1 -1
- package/dist/repositories/workflow-review-request-workflow.repository.d.ts +2 -2
- package/dist/repositories/workflow-review-request-workflow.repository.js +4 -3
- package/dist/repositories/workflow-review-request-workflow.repository.js.map +1 -1
- package/dist/repositories/workflow-review-request.repository.d.ts +29 -8
- package/dist/repositories/workflow-review-request.repository.js +120 -28
- package/dist/repositories/workflow-review-request.repository.js.map +1 -1
- package/dist/repositories/workflow.repository.d.ts +2 -3
- package/dist/repositories/workflow.repository.js +8 -10
- package/dist/repositories/workflow.repository.js.map +1 -1
- package/dist/utils/list-query-sort.d.ts +6 -0
- package/dist/utils/list-query-sort.js +11 -0
- package/dist/utils/list-query-sort.js.map +1 -0
- package/package.json +17 -16
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DataSource } from '@n8n/typeorm';
|
|
2
2
|
import { BaseRepository } from './base-repository';
|
|
3
3
|
import { WorkflowReviewRequestWorkflow } from '../entities/workflow-review-request-workflow.ee';
|
|
4
|
-
import type
|
|
4
|
+
import { type OperationContext, TransactionRunner } from '../services/transaction';
|
|
5
5
|
export type WorkflowReviewRequestLinkedWorkflow = {
|
|
6
6
|
workflowName: string;
|
|
7
7
|
workflowVersionId: string | null;
|
|
@@ -12,7 +12,7 @@ export type WorkflowReviewRequestWorkflowDetailRow = {
|
|
|
12
12
|
workflowVersionId: string | null;
|
|
13
13
|
};
|
|
14
14
|
export declare class WorkflowReviewRequestWorkflowRepository extends BaseRepository<WorkflowReviewRequestWorkflow> {
|
|
15
|
-
constructor(dataSource: DataSource);
|
|
15
|
+
constructor(dataSource: DataSource, transactionRunner: TransactionRunner);
|
|
16
16
|
createWorkflowRow(input: {
|
|
17
17
|
id?: string;
|
|
18
18
|
workflowReviewRequestId: string;
|
|
@@ -15,9 +15,10 @@ const typeorm_1 = require("@n8n/typeorm");
|
|
|
15
15
|
const base_repository_1 = require("./base-repository");
|
|
16
16
|
const workflow_entity_1 = require("../entities/workflow-entity");
|
|
17
17
|
const workflow_review_request_workflow_ee_1 = require("../entities/workflow-review-request-workflow.ee");
|
|
18
|
+
const transaction_1 = require("../services/transaction");
|
|
18
19
|
let WorkflowReviewRequestWorkflowRepository = class WorkflowReviewRequestWorkflowRepository extends base_repository_1.BaseRepository {
|
|
19
|
-
constructor(dataSource) {
|
|
20
|
-
super(workflow_review_request_workflow_ee_1.WorkflowReviewRequestWorkflow, dataSource.manager);
|
|
20
|
+
constructor(dataSource, transactionRunner) {
|
|
21
|
+
super(workflow_review_request_workflow_ee_1.WorkflowReviewRequestWorkflow, dataSource.manager, transactionRunner);
|
|
21
22
|
}
|
|
22
23
|
async createWorkflowRow(input, ctx) {
|
|
23
24
|
const entity = this.create({
|
|
@@ -75,6 +76,6 @@ let WorkflowReviewRequestWorkflowRepository = class WorkflowReviewRequestWorkflo
|
|
|
75
76
|
exports.WorkflowReviewRequestWorkflowRepository = WorkflowReviewRequestWorkflowRepository;
|
|
76
77
|
exports.WorkflowReviewRequestWorkflowRepository = WorkflowReviewRequestWorkflowRepository = __decorate([
|
|
77
78
|
(0, di_1.Service)(),
|
|
78
|
-
__metadata("design:paramtypes", [typeorm_1.DataSource])
|
|
79
|
+
__metadata("design:paramtypes", [typeorm_1.DataSource, transaction_1.TransactionRunner])
|
|
79
80
|
], WorkflowReviewRequestWorkflowRepository);
|
|
80
81
|
//# sourceMappingURL=workflow-review-request-workflow.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-review-request-workflow.repository.js","sourceRoot":"","sources":["../../src/repositories/workflow-review-request-workflow.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,gCAAkC;AAClC,0CAA0C;AAE1C,uDAAmD;AACnD,iEAA6D;AAC7D,yGAAgG;
|
|
1
|
+
{"version":3,"file":"workflow-review-request-workflow.repository.js","sourceRoot":"","sources":["../../src/repositories/workflow-review-request-workflow.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,48 @@
|
|
|
1
|
+
import type { WorkflowReviewClosedReason } from '@n8n/api-types';
|
|
1
2
|
import { DataSource } from '@n8n/typeorm';
|
|
2
3
|
import { BaseRepository } from './base-repository';
|
|
3
4
|
import { WorkflowReviewRequest, type WorkflowReviewRequestDecision, type WorkflowReviewRequestState } from '../entities/workflow-review-request.ee';
|
|
4
|
-
import type
|
|
5
|
+
import { type OperationContext, TransactionRunner } from '../services/transaction';
|
|
5
6
|
export type InboxCursor = {
|
|
6
7
|
createdAt: Date;
|
|
7
8
|
id: string;
|
|
8
9
|
};
|
|
10
|
+
export type InboxCategoryFilter = {
|
|
11
|
+
userId: string;
|
|
12
|
+
category: 'waiting' | 'authored';
|
|
13
|
+
};
|
|
14
|
+
export type InboxVisibility = {
|
|
15
|
+
scope: 'all';
|
|
16
|
+
} | {
|
|
17
|
+
scope: 'involved';
|
|
18
|
+
userId: string;
|
|
19
|
+
adminProjectIds: string[];
|
|
20
|
+
readableProjectIds: string[] | null;
|
|
21
|
+
readableWorkflowRoles: string[];
|
|
22
|
+
};
|
|
9
23
|
export type FindManyForInboxOptions = {
|
|
10
|
-
|
|
11
|
-
requesterId: string;
|
|
24
|
+
visibility: InboxVisibility;
|
|
12
25
|
state?: WorkflowReviewRequestState;
|
|
26
|
+
category?: InboxCategoryFilter;
|
|
13
27
|
limit: number;
|
|
14
28
|
cursor?: InboxCursor;
|
|
15
29
|
};
|
|
16
|
-
export type WorkflowReviewRequestForWorkflowRow = Pick<WorkflowReviewRequest, 'id' | 'state' | 'decision' | 'updatedById' | 'createdAt' | 'updatedAt'> & {
|
|
30
|
+
export type WorkflowReviewRequestForWorkflowRow = Pick<WorkflowReviewRequest, 'id' | 'state' | 'decision' | 'description' | 'updatedById' | 'createdAt' | 'updatedAt'> & {
|
|
17
31
|
workflowVersionId: string | null;
|
|
18
32
|
};
|
|
19
33
|
export type CountByStateForInboxOptions = {
|
|
20
|
-
|
|
21
|
-
requesterId: string;
|
|
34
|
+
visibility: InboxVisibility;
|
|
22
35
|
};
|
|
23
36
|
export type InboxStateCounts = {
|
|
24
37
|
open: number;
|
|
25
38
|
closed: number;
|
|
26
39
|
};
|
|
40
|
+
export type ClosedUnreviewableRequest = {
|
|
41
|
+
id: string;
|
|
42
|
+
reason: WorkflowReviewClosedReason;
|
|
43
|
+
};
|
|
27
44
|
export declare class WorkflowReviewRequestRepository extends BaseRepository<WorkflowReviewRequest> {
|
|
28
|
-
constructor(dataSource: DataSource);
|
|
45
|
+
constructor(dataSource: DataSource, transactionRunner: TransactionRunner);
|
|
29
46
|
createRequest(input: {
|
|
30
47
|
id?: string;
|
|
31
48
|
projectId: string;
|
|
@@ -37,7 +54,7 @@ export declare class WorkflowReviewRequestRepository extends BaseRepository<Work
|
|
|
37
54
|
updatedById?: string | null;
|
|
38
55
|
}, ctx: OperationContext): Promise<WorkflowReviewRequest>;
|
|
39
56
|
saveRequest(request: WorkflowReviewRequest, ctx: OperationContext): Promise<WorkflowReviewRequest>;
|
|
40
|
-
|
|
57
|
+
closeUnreviewableOpenRequests(ctx: OperationContext): Promise<ClosedUnreviewableRequest[]>;
|
|
41
58
|
findById(id: string, ctx: OperationContext): Promise<WorkflowReviewRequest | null>;
|
|
42
59
|
findRequestsForWorkflow(workflowId: string, options?: {
|
|
43
60
|
state?: WorkflowReviewRequestState;
|
|
@@ -52,4 +69,8 @@ export declare class WorkflowReviewRequestRepository extends BaseRepository<Work
|
|
|
52
69
|
findManyForInbox(options: FindManyForInboxOptions): Promise<WorkflowReviewRequest[]>;
|
|
53
70
|
countByStateForInbox(options: CountByStateForInboxOptions): Promise<InboxStateCounts>;
|
|
54
71
|
private applyInboxVisibility;
|
|
72
|
+
private linkedWorkflowExistsSubquery;
|
|
73
|
+
private readableLinkedWorkflowExistsSubquery;
|
|
74
|
+
private participantExistsSubquery;
|
|
75
|
+
private applyCategoryFilter;
|
|
55
76
|
}
|
|
@@ -13,11 +13,31 @@ exports.WorkflowReviewRequestRepository = void 0;
|
|
|
13
13
|
const di_1 = require("@n8n/di");
|
|
14
14
|
const typeorm_1 = require("@n8n/typeorm");
|
|
15
15
|
const base_repository_1 = require("./base-repository");
|
|
16
|
+
const shared_workflow_1 = require("../entities/shared-workflow");
|
|
17
|
+
const workflow_entity_1 = require("../entities/workflow-entity");
|
|
18
|
+
const workflow_review_request_author_ee_1 = require("../entities/workflow-review-request-author.ee");
|
|
19
|
+
const workflow_review_request_reviewer_ee_1 = require("../entities/workflow-review-request-reviewer.ee");
|
|
16
20
|
const workflow_review_request_workflow_ee_1 = require("../entities/workflow-review-request-workflow.ee");
|
|
17
21
|
const workflow_review_request_ee_1 = require("../entities/workflow-review-request.ee");
|
|
22
|
+
const transaction_1 = require("../services/transaction");
|
|
23
|
+
const CLOSE_REASON_PRECEDENCE = [
|
|
24
|
+
'workflow-deleted',
|
|
25
|
+
'workflow-archived',
|
|
26
|
+
'workflow-moved',
|
|
27
|
+
];
|
|
28
|
+
function closeReasonFor(row) {
|
|
29
|
+
if (row.linkedWorkflowId === null)
|
|
30
|
+
return 'workflow-deleted';
|
|
31
|
+
if (row.isArchived)
|
|
32
|
+
return 'workflow-archived';
|
|
33
|
+
if (row.owningProjectId !== null && row.owningProjectId !== row.requestProjectId) {
|
|
34
|
+
return 'workflow-moved';
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
18
38
|
let WorkflowReviewRequestRepository = class WorkflowReviewRequestRepository extends base_repository_1.BaseRepository {
|
|
19
|
-
constructor(dataSource) {
|
|
20
|
-
super(workflow_review_request_ee_1.WorkflowReviewRequest, dataSource.manager);
|
|
39
|
+
constructor(dataSource, transactionRunner) {
|
|
40
|
+
super(workflow_review_request_ee_1.WorkflowReviewRequest, dataSource.manager, transactionRunner);
|
|
21
41
|
}
|
|
22
42
|
async createRequest(input, ctx) {
|
|
23
43
|
const entity = this.create({
|
|
@@ -37,32 +57,42 @@ let WorkflowReviewRequestRepository = class WorkflowReviewRequestRepository exte
|
|
|
37
57
|
async saveRequest(request, ctx) {
|
|
38
58
|
return await this.managerFor(ctx).save(workflow_review_request_ee_1.WorkflowReviewRequest, request);
|
|
39
59
|
}
|
|
40
|
-
async
|
|
60
|
+
async closeUnreviewableOpenRequests(ctx) {
|
|
41
61
|
const openState = 'open';
|
|
42
62
|
const closedState = 'closed';
|
|
63
|
+
const ownerRole = 'workflow:owner';
|
|
43
64
|
const manager = this.managerFor(ctx);
|
|
44
|
-
const
|
|
65
|
+
const rows = await manager
|
|
45
66
|
.createQueryBuilder(workflow_review_request_ee_1.WorkflowReviewRequest, 'review')
|
|
46
|
-
.select('review.id', '
|
|
67
|
+
.select('review.id', 'requestId')
|
|
68
|
+
.addSelect('review.projectId', 'requestProjectId')
|
|
69
|
+
.addSelect('workflow.id', 'linkedWorkflowId')
|
|
70
|
+
.addSelect('workflow.isArchived', 'isArchived')
|
|
71
|
+
.addSelect('shared.projectId', 'owningProjectId')
|
|
72
|
+
.leftJoin(workflow_review_request_workflow_ee_1.WorkflowReviewRequestWorkflow, 'link', 'link.workflowReviewRequestId = review.id')
|
|
73
|
+
.leftJoin(workflow_entity_1.WorkflowEntity, 'workflow', 'workflow.id = link.workflowId')
|
|
74
|
+
.leftJoin(shared_workflow_1.SharedWorkflow, 'shared', 'shared.workflowId = link.workflowId AND shared.role = :ownerRole', { ownerRole })
|
|
47
75
|
.where('review.state = :openState', { openState })
|
|
48
|
-
.andWhere((qb) => {
|
|
49
|
-
const linkedWorkflowExists = qb
|
|
50
|
-
.subQuery()
|
|
51
|
-
.select('1')
|
|
52
|
-
.from(workflow_review_request_workflow_ee_1.WorkflowReviewRequestWorkflow, 'requestWorkflow')
|
|
53
|
-
.where('requestWorkflow.workflowReviewRequestId = review.id')
|
|
54
|
-
.getQuery();
|
|
55
|
-
return `NOT EXISTS ${linkedWorkflowExists}`;
|
|
56
|
-
})
|
|
57
76
|
.getRawMany();
|
|
58
|
-
|
|
77
|
+
const reasonByRequestId = new Map();
|
|
78
|
+
for (const row of rows) {
|
|
79
|
+
const reason = closeReasonFor(row);
|
|
80
|
+
if (reason === null)
|
|
81
|
+
continue;
|
|
82
|
+
const current = reasonByRequestId.get(row.requestId);
|
|
83
|
+
if (current !== undefined &&
|
|
84
|
+
CLOSE_REASON_PRECEDENCE.indexOf(current) <= CLOSE_REASON_PRECEDENCE.indexOf(reason)) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
reasonByRequestId.set(row.requestId, reason);
|
|
88
|
+
}
|
|
89
|
+
if (reasonByRequestId.size === 0)
|
|
59
90
|
return [];
|
|
60
|
-
|
|
61
|
-
await manager.update(workflow_review_request_ee_1.WorkflowReviewRequest, ids, {
|
|
91
|
+
await manager.update(workflow_review_request_ee_1.WorkflowReviewRequest, [...reasonByRequestId.keys()], {
|
|
62
92
|
state: closedState,
|
|
63
93
|
closedById: null,
|
|
64
94
|
});
|
|
65
|
-
return
|
|
95
|
+
return [...reasonByRequestId].map(([id, reason]) => ({ id, reason }));
|
|
66
96
|
}
|
|
67
97
|
async findById(id, ctx) {
|
|
68
98
|
return await this.managerFor(ctx).findOne(workflow_review_request_ee_1.WorkflowReviewRequest, { where: { id } });
|
|
@@ -93,6 +123,7 @@ let WorkflowReviewRequestRepository = class WorkflowReviewRequestRepository exte
|
|
|
93
123
|
id: entity.id,
|
|
94
124
|
state: entity.state,
|
|
95
125
|
decision: entity.decision,
|
|
126
|
+
description: entity.description,
|
|
96
127
|
updatedById: entity.updatedById,
|
|
97
128
|
createdAt: entity.createdAt,
|
|
98
129
|
updatedAt: entity.updatedAt,
|
|
@@ -133,11 +164,14 @@ let WorkflowReviewRequestRepository = class WorkflowReviewRequestRepository exte
|
|
|
133
164
|
}));
|
|
134
165
|
}
|
|
135
166
|
async findManyForInbox(options) {
|
|
136
|
-
const {
|
|
167
|
+
const { visibility, state, category, limit, cursor } = options;
|
|
137
168
|
const queryBuilder = this.createQueryBuilder('review')
|
|
138
169
|
.orderBy('review.createdAt', 'DESC')
|
|
139
170
|
.addOrderBy('review.id', 'ASC');
|
|
140
|
-
this.applyInboxVisibility(queryBuilder,
|
|
171
|
+
this.applyInboxVisibility(queryBuilder, visibility);
|
|
172
|
+
if (category) {
|
|
173
|
+
this.applyCategoryFilter(queryBuilder, category);
|
|
174
|
+
}
|
|
141
175
|
if (state !== undefined) {
|
|
142
176
|
queryBuilder.andWhere('review.state = :state', { state });
|
|
143
177
|
}
|
|
@@ -148,32 +182,90 @@ let WorkflowReviewRequestRepository = class WorkflowReviewRequestRepository exte
|
|
|
148
182
|
return await queryBuilder.getMany();
|
|
149
183
|
}
|
|
150
184
|
async countByStateForInbox(options) {
|
|
151
|
-
const { projectIds, requesterId } = options;
|
|
152
185
|
const queryBuilder = this.createQueryBuilder('review')
|
|
153
186
|
.select('review.state', 'state')
|
|
154
187
|
.addSelect('COUNT(*)', 'count')
|
|
155
188
|
.groupBy('review.state');
|
|
156
|
-
this.applyInboxVisibility(queryBuilder,
|
|
189
|
+
this.applyInboxVisibility(queryBuilder, options.visibility);
|
|
157
190
|
const rows = await queryBuilder.getRawMany();
|
|
158
191
|
return {
|
|
159
192
|
open: Number(rows.find((row) => row.state === 'open')?.count ?? 0),
|
|
160
193
|
closed: Number(rows.find((row) => row.state === 'closed')?.count ?? 0),
|
|
161
194
|
};
|
|
162
195
|
}
|
|
163
|
-
applyInboxVisibility(queryBuilder,
|
|
164
|
-
if (
|
|
196
|
+
applyInboxVisibility(queryBuilder, visibility) {
|
|
197
|
+
if (visibility.scope === 'all') {
|
|
165
198
|
return;
|
|
166
199
|
}
|
|
167
|
-
|
|
168
|
-
|
|
200
|
+
const { userId, adminProjectIds, readableProjectIds, readableWorkflowRoles } = visibility;
|
|
201
|
+
const parameters = { involvedUserId: userId };
|
|
202
|
+
const clauses = [];
|
|
203
|
+
if (adminProjectIds.length > 0) {
|
|
204
|
+
clauses.push('review.projectId IN (:...adminProjectIds)');
|
|
205
|
+
parameters.adminProjectIds = adminProjectIds;
|
|
206
|
+
}
|
|
207
|
+
const authorExists = this.participantExistsSubquery(queryBuilder, workflow_review_request_author_ee_1.WorkflowReviewRequestAuthor, 'visibilityAuthor', 'involvedUserId');
|
|
208
|
+
const reviewerExists = this.participantExistsSubquery(queryBuilder, workflow_review_request_reviewer_ee_1.WorkflowReviewRequestReviewer, 'visibilityReviewer', 'involvedUserId');
|
|
209
|
+
clauses.push(`(EXISTS ${authorExists} OR EXISTS ${reviewerExists})`);
|
|
210
|
+
if (readableProjectIds === null) {
|
|
211
|
+
queryBuilder.andWhere(`(${clauses.join(' OR ')})`, parameters);
|
|
169
212
|
return;
|
|
170
213
|
}
|
|
171
|
-
|
|
214
|
+
if (readableProjectIds.length === 0 || readableWorkflowRoles.length === 0) {
|
|
215
|
+
queryBuilder.andWhere('1 = 0');
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
parameters.readableProjectIds = readableProjectIds;
|
|
219
|
+
parameters.readableWorkflowRoles = readableWorkflowRoles;
|
|
220
|
+
const anyLinkExists = this.linkedWorkflowExistsSubquery(queryBuilder, 'visibilityAnyLink');
|
|
221
|
+
const readableLinkExists = this.readableLinkedWorkflowExistsSubquery(queryBuilder);
|
|
222
|
+
queryBuilder.andWhere(`(${clauses.join(' OR ')}) AND (NOT EXISTS ${anyLinkExists} OR EXISTS ${readableLinkExists})`, parameters);
|
|
223
|
+
}
|
|
224
|
+
linkedWorkflowExistsSubquery(queryBuilder, alias) {
|
|
225
|
+
return queryBuilder
|
|
226
|
+
.subQuery()
|
|
227
|
+
.select('1')
|
|
228
|
+
.from(workflow_review_request_workflow_ee_1.WorkflowReviewRequestWorkflow, alias)
|
|
229
|
+
.where(`${alias}.workflowReviewRequestId = review.id`)
|
|
230
|
+
.getQuery();
|
|
231
|
+
}
|
|
232
|
+
readableLinkedWorkflowExistsSubquery(queryBuilder) {
|
|
233
|
+
return queryBuilder
|
|
234
|
+
.subQuery()
|
|
235
|
+
.select('1')
|
|
236
|
+
.from(shared_workflow_1.SharedWorkflow, 'visibilityShared')
|
|
237
|
+
.innerJoin(workflow_review_request_workflow_ee_1.WorkflowReviewRequestWorkflow, 'visibilityLink', 'visibilityLink.workflowId = visibilityShared.workflowId')
|
|
238
|
+
.where('visibilityLink.workflowReviewRequestId = review.id')
|
|
239
|
+
.andWhere('visibilityShared.role IN (:...readableWorkflowRoles)')
|
|
240
|
+
.andWhere('visibilityShared.projectId IN (:...readableProjectIds)')
|
|
241
|
+
.getQuery();
|
|
242
|
+
}
|
|
243
|
+
participantExistsSubquery(queryBuilder, junctionEntity, alias, userParameter) {
|
|
244
|
+
return queryBuilder
|
|
245
|
+
.subQuery()
|
|
246
|
+
.select('1')
|
|
247
|
+
.from(junctionEntity, alias)
|
|
248
|
+
.where(`${alias}.workflowReviewRequestId = review.id`)
|
|
249
|
+
.andWhere(`${alias}.userId = :${userParameter}`)
|
|
250
|
+
.getQuery();
|
|
251
|
+
}
|
|
252
|
+
applyCategoryFilter(queryBuilder, { userId, category }) {
|
|
253
|
+
const authorExists = this.participantExistsSubquery(queryBuilder, workflow_review_request_author_ee_1.WorkflowReviewRequestAuthor, 'author', 'categoryUserId');
|
|
254
|
+
const reviewerExists = this.participantExistsSubquery(queryBuilder, workflow_review_request_reviewer_ee_1.WorkflowReviewRequestReviewer, 'reviewer', 'categoryUserId');
|
|
255
|
+
if (category === 'authored') {
|
|
256
|
+
queryBuilder.andWhere(`(EXISTS ${authorExists} AND NOT EXISTS ${reviewerExists})`, {
|
|
257
|
+
categoryUserId: userId,
|
|
258
|
+
});
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
queryBuilder.andWhere(`(EXISTS ${reviewerExists} OR NOT EXISTS ${authorExists})`, {
|
|
262
|
+
categoryUserId: userId,
|
|
263
|
+
});
|
|
172
264
|
}
|
|
173
265
|
};
|
|
174
266
|
exports.WorkflowReviewRequestRepository = WorkflowReviewRequestRepository;
|
|
175
267
|
exports.WorkflowReviewRequestRepository = WorkflowReviewRequestRepository = __decorate([
|
|
176
268
|
(0, di_1.Service)(),
|
|
177
|
-
__metadata("design:paramtypes", [typeorm_1.DataSource])
|
|
269
|
+
__metadata("design:paramtypes", [typeorm_1.DataSource, transaction_1.TransactionRunner])
|
|
178
270
|
], WorkflowReviewRequestRepository);
|
|
179
271
|
//# sourceMappingURL=workflow-review-request.repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-review-request.repository.js","sourceRoot":"","sources":["../../src/repositories/workflow-review-request.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"workflow-review-request.repository.js","sourceRoot":"","sources":["../../src/repositories/workflow-review-request.repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { SharedWorkflowRepository } from './shared-workflow.repository';
|
|
|
8
8
|
import { WorkflowHistoryRepository } from './workflow-history.repository';
|
|
9
9
|
import { WorkflowEntity, User } from '../entities';
|
|
10
10
|
import type { ListQueryDb, FolderWithWorkflowAndSubFolderCount, ListQuery } from '../entities/types-db';
|
|
11
|
-
import type
|
|
11
|
+
import { type OperationContext, TransactionRunner } from '../services/transaction';
|
|
12
12
|
type ResourceType = 'folder' | 'workflow';
|
|
13
13
|
export type WorkflowFolderUnionFull = (ListQueryDb.Workflow.Plain | ListQueryDb.Workflow.WithSharing | FolderWithWorkflowAndSubFolderCount) & {
|
|
14
14
|
resource: ResourceType;
|
|
@@ -22,7 +22,7 @@ export declare class WorkflowRepository extends BaseRepository<WorkflowEntity> {
|
|
|
22
22
|
private readonly folderRepository;
|
|
23
23
|
private readonly sharedWorkflowRepository;
|
|
24
24
|
private readonly workflowHistoryRepository;
|
|
25
|
-
constructor(dataSource: DataSource, globalConfig: GlobalConfig, folderRepository: FolderRepository, sharedWorkflowRepository: SharedWorkflowRepository, workflowHistoryRepository: WorkflowHistoryRepository);
|
|
25
|
+
constructor(dataSource: DataSource, globalConfig: GlobalConfig, folderRepository: FolderRepository, sharedWorkflowRepository: SharedWorkflowRepository, workflowHistoryRepository: WorkflowHistoryRepository, transactionRunner: TransactionRunner);
|
|
26
26
|
get(where: FindOptionsWhere<WorkflowEntity>, options?: {
|
|
27
27
|
relations: string[] | FindOptionsRelations<WorkflowEntity>;
|
|
28
28
|
}): Promise<WorkflowEntity | null>;
|
|
@@ -128,7 +128,6 @@ export declare class WorkflowRepository extends BaseRepository<WorkflowEntity> {
|
|
|
128
128
|
private applyActiveVersionRelation;
|
|
129
129
|
private applyTagsRelation;
|
|
130
130
|
private applySorting;
|
|
131
|
-
private parseSortingParams;
|
|
132
131
|
private applySortingByColumn;
|
|
133
132
|
private applyPagination;
|
|
134
133
|
findStartingWith(workflowName: string): Promise<Array<{
|
|
@@ -20,12 +20,14 @@ const shared_workflow_repository_1 = require("./shared-workflow.repository");
|
|
|
20
20
|
const workflow_history_repository_1 = require("./workflow-history.repository");
|
|
21
21
|
const entities_1 = require("../entities");
|
|
22
22
|
const shared_workflow_1 = require("../entities/shared-workflow");
|
|
23
|
+
const transaction_1 = require("../services/transaction");
|
|
23
24
|
const apply_workflow_boolean_setting_filter_1 = require("../utils/apply-workflow-boolean-setting-filter");
|
|
24
25
|
const is_string_array_1 = require("../utils/is-string-array");
|
|
26
|
+
const list_query_sort_1 = require("../utils/list-query-sort");
|
|
25
27
|
const timed_query_1 = require("../utils/timed-query");
|
|
26
28
|
let WorkflowRepository = class WorkflowRepository extends base_repository_1.BaseRepository {
|
|
27
|
-
constructor(dataSource, globalConfig, folderRepository, sharedWorkflowRepository, workflowHistoryRepository) {
|
|
28
|
-
super(entities_1.WorkflowEntity, dataSource.manager);
|
|
29
|
+
constructor(dataSource, globalConfig, folderRepository, sharedWorkflowRepository, workflowHistoryRepository, transactionRunner) {
|
|
30
|
+
super(entities_1.WorkflowEntity, dataSource.manager, transactionRunner);
|
|
29
31
|
this.globalConfig = globalConfig;
|
|
30
32
|
this.folderRepository = folderRepository;
|
|
31
33
|
this.sharedWorkflowRepository = sharedWorkflowRepository;
|
|
@@ -246,7 +248,7 @@ let WorkflowRepository = class WorkflowRepository extends base_repository_1.Base
|
|
|
246
248
|
filter: options.filter,
|
|
247
249
|
};
|
|
248
250
|
const columnNames = [...Object.keys(workflowQueryParameters.select ?? {}), 'resource'];
|
|
249
|
-
const
|
|
251
|
+
const { column: sortByColumn, direction: sortByDirection } = (0, list_query_sort_1.parseListQuerySortBy)(options.sortBy ?? 'updatedAt:asc');
|
|
250
252
|
const foldersQuery = this.folderRepository
|
|
251
253
|
.getManyQuery(folderQueryParameters)
|
|
252
254
|
.addSelect('NULL', 'description')
|
|
@@ -424,7 +426,7 @@ let WorkflowRepository = class WorkflowRepository extends base_repository_1.Base
|
|
|
424
426
|
filter: options.filter,
|
|
425
427
|
};
|
|
426
428
|
const columnNames = [...Object.keys(workflowQueryParameters.select ?? {}), 'resource'];
|
|
427
|
-
const
|
|
429
|
+
const { column: sortByColumn, direction: sortByDirection } = (0, list_query_sort_1.parseListQuerySortBy)(options.sortBy ?? 'updatedAt:asc');
|
|
428
430
|
const foldersQuery = this.folderRepository
|
|
429
431
|
.getManyQuery(folderQueryParameters)
|
|
430
432
|
.addSelect('NULL', 'description')
|
|
@@ -832,13 +834,9 @@ let WorkflowRepository = class WorkflowRepository extends base_repository_1.Base
|
|
|
832
834
|
qb.orderBy('workflow.updatedAt', 'ASC');
|
|
833
835
|
return;
|
|
834
836
|
}
|
|
835
|
-
const
|
|
837
|
+
const { column, direction } = (0, list_query_sort_1.parseListQuerySortBy)(sortBy);
|
|
836
838
|
this.applySortingByColumn(qb, column, direction);
|
|
837
839
|
}
|
|
838
|
-
parseSortingParams(sortBy) {
|
|
839
|
-
const [column, order] = sortBy.split(':');
|
|
840
|
-
return [column, order.toUpperCase()];
|
|
841
|
-
}
|
|
842
840
|
applySortingByColumn(qb, column, direction) {
|
|
843
841
|
if (column === 'name') {
|
|
844
842
|
qb.addSelect('LOWER(workflow.name)', 'workflow_name_lower').orderBy('workflow_name_lower', direction);
|
|
@@ -1008,6 +1006,6 @@ __decorate([
|
|
|
1008
1006
|
], WorkflowRepository.prototype, "getMany", null);
|
|
1009
1007
|
exports.WorkflowRepository = WorkflowRepository = __decorate([
|
|
1010
1008
|
(0, di_1.Service)(),
|
|
1011
|
-
__metadata("design:paramtypes", [typeorm_1.DataSource, config_1.GlobalConfig, folder_repository_1.FolderRepository, shared_workflow_repository_1.SharedWorkflowRepository, workflow_history_repository_1.WorkflowHistoryRepository])
|
|
1009
|
+
__metadata("design:paramtypes", [typeorm_1.DataSource, config_1.GlobalConfig, folder_repository_1.FolderRepository, shared_workflow_repository_1.SharedWorkflowRepository, workflow_history_repository_1.WorkflowHistoryRepository, transaction_1.TransactionRunner])
|
|
1012
1010
|
], WorkflowRepository);
|
|
1013
1011
|
//# sourceMappingURL=workflow.repository.js.map
|