@knpkv/codecommit-core 0.13.0 → 0.15.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/AwsClient/AwsClientGated.d.ts.map +1 -1
- package/dist/AwsClient/AwsClientGated.js +3 -3
- package/dist/AwsClient/AwsClientGated.js.map +1 -1
- package/dist/AwsClient/getPullRequests.d.ts +1 -0
- package/dist/AwsClient/getPullRequests.d.ts.map +1 -1
- package/dist/AwsClient/getPullRequests.js +10 -7
- package/dist/AwsClient/getPullRequests.js.map +1 -1
- package/dist/AwsClient/index.d.ts +1 -0
- package/dist/AwsClient/index.d.ts.map +1 -1
- package/dist/AwsClient/internal.d.ts +29 -8
- package/dist/AwsClient/internal.d.ts.map +1 -1
- package/dist/AwsClient/internal.js +5 -12
- package/dist/AwsClient/internal.js.map +1 -1
- package/dist/AwsClientConfig/internal/ProfileCredentialProvider.d.ts +18 -0
- package/dist/AwsClientConfig/internal/ProfileCredentialProvider.d.ts.map +1 -0
- package/dist/AwsClientConfig/internal/ProfileCredentialProvider.js +7 -0
- package/dist/AwsClientConfig/internal/ProfileCredentialProvider.js.map +1 -0
- package/dist/AwsClientConfig.d.ts +13 -22
- package/dist/AwsClientConfig.d.ts.map +1 -1
- package/dist/AwsClientConfig.js +37 -0
- package/dist/AwsClientConfig.js.map +1 -1
- package/dist/CacheService/Database.d.ts +1 -1
- package/dist/CacheService/Database.d.ts.map +1 -1
- package/dist/CacheService/Database.js +10 -2
- package/dist/CacheService/Database.js.map +1 -1
- package/dist/CacheService/diff.d.ts +5 -2
- package/dist/CacheService/diff.d.ts.map +1 -1
- package/dist/CacheService/diff.js +31 -13
- package/dist/CacheService/diff.js.map +1 -1
- package/dist/CacheService/migrations/0017_sandbox_region.d.ts +5 -0
- package/dist/CacheService/migrations/0017_sandbox_region.d.ts.map +1 -0
- package/dist/CacheService/migrations/0017_sandbox_region.js +4 -0
- package/dist/CacheService/migrations/0017_sandbox_region.js.map +1 -0
- package/dist/CacheService/migrations/0018_pull_request_coordinates.d.ts +6 -0
- package/dist/CacheService/migrations/0018_pull_request_coordinates.d.ts.map +1 -0
- package/dist/CacheService/migrations/0018_pull_request_coordinates.js +82 -0
- package/dist/CacheService/migrations/0018_pull_request_coordinates.js.map +1 -0
- package/dist/CacheService/migrations/0019_dependent_pr_coordinates.d.ts +6 -0
- package/dist/CacheService/migrations/0019_dependent_pr_coordinates.d.ts.map +1 -0
- package/dist/CacheService/migrations/0019_dependent_pr_coordinates.js +57 -0
- package/dist/CacheService/migrations/0019_dependent_pr_coordinates.js.map +1 -0
- package/dist/CacheService/migrations/0020_notification_coordinates.d.ts +6 -0
- package/dist/CacheService/migrations/0020_notification_coordinates.d.ts.map +1 -0
- package/dist/CacheService/migrations/0020_notification_coordinates.js +22 -0
- package/dist/CacheService/migrations/0020_notification_coordinates.js.map +1 -0
- package/dist/CacheService/repos/CommentRepo.d.ts +6 -2
- package/dist/CacheService/repos/CommentRepo.d.ts.map +1 -1
- package/dist/CacheService/repos/CommentRepo.js +46 -7
- package/dist/CacheService/repos/CommentRepo.js.map +1 -1
- package/dist/CacheService/repos/NotificationRepo.d.ts +2 -0
- package/dist/CacheService/repos/NotificationRepo.d.ts.map +1 -1
- package/dist/CacheService/repos/NotificationRepo.js +10 -3
- package/dist/CacheService/repos/NotificationRepo.js.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/index.d.ts +42 -7
- package/dist/CacheService/repos/PullRequestRepo/index.d.ts.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/index.js +2 -0
- package/dist/CacheService/repos/PullRequestRepo/index.js.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/mutations.d.ts +9 -5
- package/dist/CacheService/repos/PullRequestRepo/mutations.d.ts.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/mutations.js +61 -17
- package/dist/CacheService/repos/PullRequestRepo/mutations.js.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/queries.d.ts +48 -4
- package/dist/CacheService/repos/PullRequestRepo/queries.d.ts.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/queries.js +40 -5
- package/dist/CacheService/repos/PullRequestRepo/queries.js.map +1 -1
- package/dist/CacheService/repos/SandboxRepo.d.ts +45 -1
- package/dist/CacheService/repos/SandboxRepo.d.ts.map +1 -1
- package/dist/CacheService/repos/SandboxRepo.js +53 -8
- package/dist/CacheService/repos/SandboxRepo.js.map +1 -1
- package/dist/CacheService/repos/StatsRepo/index.d.ts +3 -0
- package/dist/CacheService/repos/StatsRepo/index.d.ts.map +1 -1
- package/dist/CacheService/repos/StatsRepo/internal.d.ts +6 -0
- package/dist/CacheService/repos/StatsRepo/internal.d.ts.map +1 -1
- package/dist/CacheService/repos/StatsRepo/internal.js +5 -5
- package/dist/CacheService/repos/StatsRepo/internal.js.map +1 -1
- package/dist/CacheService/repos/StatsRepo/queries.d.ts +1 -0
- package/dist/CacheService/repos/StatsRepo/queries.d.ts.map +1 -1
- package/dist/CacheService/repos/StatsRepo/queries.js +5 -4
- package/dist/CacheService/repos/StatsRepo/queries.js.map +1 -1
- package/dist/CacheService/repos/StatsRepo/reviewerData.d.ts +2 -0
- package/dist/CacheService/repos/StatsRepo/reviewerData.d.ts.map +1 -1
- package/dist/CacheService/repos/StatsRepo/reviewerData.js +38 -15
- package/dist/CacheService/repos/StatsRepo/reviewerData.js.map +1 -1
- package/dist/CacheService/repos/SubscriptionRepo.d.ts +11 -5
- package/dist/CacheService/repos/SubscriptionRepo.d.ts.map +1 -1
- package/dist/CacheService/repos/SubscriptionRepo.js +106 -12
- package/dist/CacheService/repos/SubscriptionRepo.js.map +1 -1
- package/dist/ChildEnv.d.ts +13 -0
- package/dist/ChildEnv.d.ts.map +1 -1
- package/dist/ChildEnv.js +50 -0
- package/dist/ChildEnv.js.map +1 -1
- package/dist/ConfigService/index.d.ts +2 -2
- package/dist/ConfigService/index.d.ts.map +1 -1
- package/dist/ConfigService/index.js +2 -2
- package/dist/ConfigService/index.js.map +1 -1
- package/dist/ConfigService/internal.d.ts +3 -21
- package/dist/ConfigService/internal.d.ts.map +1 -1
- package/dist/ConfigService/internal.js +1 -43
- package/dist/ConfigService/internal.js.map +1 -1
- package/dist/ConfigService/load.d.ts +3 -0
- package/dist/ConfigService/load.d.ts.map +1 -1
- package/dist/ConfigService/reset.d.ts +3 -0
- package/dist/ConfigService/reset.d.ts.map +1 -1
- package/dist/ConfigService/save.d.ts +3 -0
- package/dist/ConfigService/save.d.ts.map +1 -1
- package/dist/Domain.d.ts +19 -0
- package/dist/Domain.d.ts.map +1 -1
- package/dist/Domain.js +66 -3
- package/dist/Domain.js.map +1 -1
- package/dist/ManagedReviewProtocol.d.ts +5 -0
- package/dist/ManagedReviewProtocol.d.ts.map +1 -0
- package/dist/ManagedReviewProtocol.js +5 -0
- package/dist/ManagedReviewProtocol.js.map +1 -0
- package/dist/MockTransport.d.ts +24 -0
- package/dist/MockTransport.d.ts.map +1 -0
- package/dist/MockTransport.js +58 -0
- package/dist/MockTransport.js.map +1 -0
- package/dist/PRService/index.d.ts +15 -8
- package/dist/PRService/index.d.ts.map +1 -1
- package/dist/PRService/index.js +5 -5
- package/dist/PRService/index.js.map +1 -1
- package/dist/PRService/refreshDiffs.d.ts.map +1 -1
- package/dist/PRService/refreshDiffs.js +12 -3
- package/dist/PRService/refreshDiffs.js.map +1 -1
- package/dist/PRService/refreshEnrich.d.ts.map +1 -1
- package/dist/PRService/refreshEnrich.js +28 -11
- package/dist/PRService/refreshEnrich.js.map +1 -1
- package/dist/PRService/refreshFetch.d.ts.map +1 -1
- package/dist/PRService/refreshFetch.js +25 -13
- package/dist/PRService/refreshFetch.js.map +1 -1
- package/dist/PRService/refreshHistory.d.ts +1 -1
- package/dist/PRService/refreshHistory.d.ts.map +1 -1
- package/dist/PRService/refreshHistory.js +6 -4
- package/dist/PRService/refreshHistory.js.map +1 -1
- package/dist/PRService/refreshResolve.d.ts +4 -1
- package/dist/PRService/refreshResolve.d.ts.map +1 -1
- package/dist/PRService/refreshResolve.js +19 -6
- package/dist/PRService/refreshResolve.js.map +1 -1
- package/dist/PRService/refreshScore.d.ts.map +1 -1
- package/dist/PRService/refreshScore.js +4 -1
- package/dist/PRService/refreshScore.js.map +1 -1
- package/dist/PRService/refreshSinglePR.d.ts +9 -2
- package/dist/PRService/refreshSinglePR.d.ts.map +1 -1
- package/dist/PRService/refreshSinglePR.js +99 -33
- package/dist/PRService/refreshSinglePR.js.map +1 -1
- package/dist/ReviewProfile.d.ts +39 -0
- package/dist/ReviewProfile.d.ts.map +1 -1
- package/dist/ReviewProfile.js +72 -0
- package/dist/ReviewProfile.js.map +1 -1
- package/dist/SandboxService/DockerService.d.ts +2 -0
- package/dist/SandboxService/DockerService.d.ts.map +1 -1
- package/dist/SandboxService/DockerService.js +47 -16
- package/dist/SandboxService/DockerService.js.map +1 -1
- package/dist/SandboxService/SandboxService.d.ts +4 -0
- package/dist/SandboxService/SandboxService.d.ts.map +1 -1
- package/dist/SandboxService/SandboxService.js +112 -25
- package/dist/SandboxService/SandboxService.js.map +1 -1
- package/dist/StatsService/WeeklyStats.d.ts +7 -0
- package/dist/StatsService/WeeklyStats.d.ts.map +1 -1
- package/dist/StatsService/WeeklyStats.js +3 -0
- package/dist/StatsService/WeeklyStats.js.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../../src/CacheService/Database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAA;AAC/D,OAAO,KAAK,cAAc,MAAM,mCAAmC,CAAA;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,aAAa,MAAM,8BAA8B,CAAA;AACxD,OAAO,aAAa,MAAM,8BAA8B,CAAA;AACxD,OAAO,aAAa,MAAM,uCAAuC,CAAA;AACjE,OAAO,aAAa,MAAM,0CAA0C,CAAA;AACpE,OAAO,aAAa,MAAM,oCAAoC,CAAA;AAC9D,OAAO,aAAa,MAAM,mCAAmC,CAAA;AAC7D,OAAO,aAAa,MAAM,oCAAoC,CAAA;AAC9D,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,aAAa,MAAM,kCAAkC,CAAA;AAC5D,OAAO,aAAa,MAAM,mCAAmC,CAAA;AAC7D,OAAO,aAAa,MAAM,gCAAgC,CAAA;AAC1D,OAAO,aAAa,MAAM,wCAAwC,CAAA;AAClE,OAAO,aAAa,MAAM,qCAAqC,CAAA;AAC/D,OAAO,aAAa,MAAM,uCAAuC,CAAA;AACjE,OAAO,aAAa,MAAM,sCAAsC,CAAA;AAChE,OAAO,aAAa,MAAM,8CAA8C,CAAA;
|
|
1
|
+
{"version":3,"file":"Database.js","sourceRoot":"","sources":["../../src/CacheService/Database.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@ import type { ApprovalRule, PRCommentLocation } from "../Domain.js";
|
|
|
19
19
|
export interface NewNotification {
|
|
20
20
|
readonly pullRequestId: string;
|
|
21
21
|
readonly awsAccountId: string;
|
|
22
|
+
readonly repositoryName?: string;
|
|
23
|
+
readonly accountRegion?: string;
|
|
22
24
|
readonly type: string;
|
|
23
25
|
readonly message: string;
|
|
24
26
|
readonly title?: string;
|
|
@@ -30,6 +32,7 @@ export interface DiffablePR {
|
|
|
30
32
|
readonly description?: string | null | undefined;
|
|
31
33
|
readonly repositoryName: string;
|
|
32
34
|
readonly accountProfile: string;
|
|
35
|
+
readonly accountRegion?: string;
|
|
33
36
|
readonly status: string;
|
|
34
37
|
readonly isApproved: boolean | number;
|
|
35
38
|
readonly isMergeable: boolean | number;
|
|
@@ -39,6 +42,6 @@ export declare const diffPR: (cached: DiffablePR, fresh: DiffablePR, awsAccountI
|
|
|
39
42
|
/**
|
|
40
43
|
* Detect when currentUser is newly added to an approval pool.
|
|
41
44
|
*/
|
|
42
|
-
export declare const diffApprovalPools: (cachedRules: ReadonlyArray<ApprovalRule>, freshRules: ReadonlyArray<ApprovalRule>, currentUser: string | undefined, prId: string, awsAccountId: string, prTitle?: string, profile?: string) => Array<NewNotification>;
|
|
43
|
-
export declare const diffComments: (cached: ReadonlyArray<PRCommentLocation>, fresh: ReadonlyArray<PRCommentLocation>, pullRequestId: string, awsAccountId: string) => Array<NewNotification>;
|
|
45
|
+
export declare const diffApprovalPools: (cachedRules: ReadonlyArray<ApprovalRule>, freshRules: ReadonlyArray<ApprovalRule>, currentUser: string | undefined, prId: string, awsAccountId: string, prTitle?: string, profile?: string, repositoryName?: string, accountRegion?: string) => Array<NewNotification>;
|
|
46
|
+
export declare const diffComments: (cached: ReadonlyArray<PRCommentLocation>, fresh: ReadonlyArray<PRCommentLocation>, pullRequestId: string, awsAccountId: string, repositoryName?: string, accountRegion?: string) => Array<NewNotification>;
|
|
44
47
|
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/CacheService/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAiB,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAElF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAClD;
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/CacheService/diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAiB,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAElF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,CAAA;IACrC,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAAA;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAClD;AAID,eAAO,MAAM,MAAM,WACT,UAAU,SACX,UAAU,gBACH,MAAM,KACnB,KAAK,CAAC,eAAe,CAmEvB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,gBACf,aAAa,CAAC,YAAY,CAAC,cAC5B,aAAa,CAAC,YAAY,CAAC,eAC1B,MAAM,GAAG,SAAS,QACzB,MAAM,gBACE,MAAM,YACV,MAAM,YACN,MAAM,mBACC,MAAM,kBACP,MAAM,KACrB,KAAK,CAAC,eAAe,CAiCvB,CAAA;AA0BD,eAAO,MAAM,YAAY,WACf,aAAa,CAAC,iBAAiB,CAAC,SACjC,aAAa,CAAC,iBAAiB,CAAC,iBACxB,MAAM,gBACP,MAAM,mBACH,MAAM,kBACP,MAAM,KACrB,KAAK,CAAC,eAAe,CAkCvB,CAAA"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
const isEnabled = (value) => value === true || value === 1;
|
|
1
2
|
export const diffPR = (cached, fresh, awsAccountId) => {
|
|
2
|
-
const base = {
|
|
3
|
+
const base = {
|
|
4
|
+
pullRequestId: fresh.id,
|
|
5
|
+
awsAccountId,
|
|
6
|
+
profile: fresh.accountProfile,
|
|
7
|
+
...((fresh.accountRegion !== undefined) && { accountRegion: fresh.accountRegion }),
|
|
8
|
+
repositoryName: fresh.repositoryName
|
|
9
|
+
};
|
|
3
10
|
const label = `#${fresh.id} ${fresh.title} (${fresh.repositoryName})`;
|
|
4
11
|
const notifications = [];
|
|
5
12
|
// Skip comment diff when cached count is null/undefined (first fetch — no baseline to compare)
|
|
@@ -9,20 +16,24 @@ export const diffPR = (cached, fresh, awsAccountId) => {
|
|
|
9
16
|
notifications.push({ ...base, type: "new_comment", title: fresh.title, message: `New comments on ${label}` });
|
|
10
17
|
}
|
|
11
18
|
}
|
|
12
|
-
|
|
19
|
+
const freshApproved = isEnabled(fresh.isApproved);
|
|
20
|
+
const cachedApproved = isEnabled(cached.isApproved);
|
|
21
|
+
const freshMergeable = isEnabled(fresh.isMergeable);
|
|
22
|
+
const cachedMergeable = isEnabled(cached.isMergeable);
|
|
23
|
+
if (freshApproved !== cachedApproved) {
|
|
13
24
|
notifications.push({
|
|
14
25
|
...base,
|
|
15
26
|
type: "approval_changed",
|
|
16
27
|
title: fresh.title,
|
|
17
|
-
message: `Approval ${
|
|
28
|
+
message: `Approval ${freshApproved ? "granted" : "revoked"} on ${label}`
|
|
18
29
|
});
|
|
19
30
|
}
|
|
20
|
-
if (
|
|
31
|
+
if (freshMergeable !== cachedMergeable) {
|
|
21
32
|
notifications.push({
|
|
22
33
|
...base,
|
|
23
34
|
type: "merge_changed",
|
|
24
35
|
title: fresh.title,
|
|
25
|
-
message: `${label} is ${
|
|
36
|
+
message: `${label} is ${freshMergeable ? "now mergeable" : "no longer mergeable"}`
|
|
26
37
|
});
|
|
27
38
|
}
|
|
28
39
|
if (fresh.title !== cached.title) {
|
|
@@ -38,7 +49,7 @@ export const diffPR = (cached, fresh, awsAccountId) => {
|
|
|
38
49
|
}
|
|
39
50
|
if (fresh.status !== cached.status) {
|
|
40
51
|
// CodeCommit sets isMergeable=false after merge, so CLOSED+!isMergeable = merged
|
|
41
|
-
if (fresh.status === "CLOSED" && !
|
|
52
|
+
if (fresh.status === "CLOSED" && !freshMergeable) {
|
|
42
53
|
notifications.push({ ...base, type: "pr_merged", title: fresh.title, message: `${label} was merged` });
|
|
43
54
|
}
|
|
44
55
|
else if (fresh.status === "CLOSED") {
|
|
@@ -53,15 +64,17 @@ export const diffPR = (cached, fresh, awsAccountId) => {
|
|
|
53
64
|
/**
|
|
54
65
|
* Detect when currentUser is newly added to an approval pool.
|
|
55
66
|
*/
|
|
56
|
-
export const diffApprovalPools = (cachedRules, freshRules, currentUser, prId, awsAccountId, prTitle, profile) => {
|
|
57
|
-
if (
|
|
67
|
+
export const diffApprovalPools = (cachedRules, freshRules, currentUser, prId, awsAccountId, prTitle, profile, repositoryName, accountRegion) => {
|
|
68
|
+
if (currentUser === undefined || currentUser === "")
|
|
58
69
|
return [];
|
|
59
70
|
const wasInPool = cachedRules.some((r) => r.poolMembers.includes(currentUser));
|
|
60
71
|
const nowInPool = freshRules.some((r) => r.poolMembers.includes(currentUser));
|
|
61
72
|
const notifications = [];
|
|
62
73
|
const optional = {
|
|
63
74
|
...((prTitle != null) && { title: prTitle }),
|
|
64
|
-
...((profile != null) && { profile })
|
|
75
|
+
...((profile != null) && { profile }),
|
|
76
|
+
...((repositoryName != null) && { repositoryName }),
|
|
77
|
+
...((accountRegion != null) && { accountRegion })
|
|
65
78
|
};
|
|
66
79
|
if (!wasInPool && nowInPool) {
|
|
67
80
|
notifications.push({
|
|
@@ -106,8 +119,13 @@ const flattenLocations = (locations) => {
|
|
|
106
119
|
}
|
|
107
120
|
return all;
|
|
108
121
|
};
|
|
109
|
-
export const diffComments = (cached, fresh, pullRequestId, awsAccountId) => {
|
|
110
|
-
const base = {
|
|
122
|
+
export const diffComments = (cached, fresh, pullRequestId, awsAccountId, repositoryName, accountRegion) => {
|
|
123
|
+
const base = {
|
|
124
|
+
pullRequestId,
|
|
125
|
+
awsAccountId,
|
|
126
|
+
...((repositoryName !== undefined) && { repositoryName }),
|
|
127
|
+
...((accountRegion !== undefined) && { accountRegion })
|
|
128
|
+
};
|
|
111
129
|
const cachedFlat = flattenLocations(cached);
|
|
112
130
|
const freshFlat = flattenLocations(fresh);
|
|
113
131
|
const cachedMap = new Map(cachedFlat.map((c) => [c.id, c]));
|
|
@@ -122,11 +140,11 @@ export const diffComments = (cached, fresh, pullRequestId, awsAccountId) => {
|
|
|
122
140
|
hasNew = true;
|
|
123
141
|
}
|
|
124
142
|
const old = cachedMap.get(f.id);
|
|
125
|
-
if (old && old.content !== f.content &&
|
|
143
|
+
if (old !== undefined && old.content !== f.content && f.deleted !== true && hasEdited === false) {
|
|
126
144
|
notifications.push({ ...base, type: "comment_edited", message: `Comment edited on #${pullRequestId}` });
|
|
127
145
|
hasEdited = true;
|
|
128
146
|
}
|
|
129
|
-
if (old &&
|
|
147
|
+
if (old !== undefined && old.deleted === false && f.deleted === true && hasDeleted === false) {
|
|
130
148
|
notifications.push({ ...base, type: "comment_deleted", message: `Comment deleted on #${pullRequestId}` });
|
|
131
149
|
hasDeleted = true;
|
|
132
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/CacheService/diff.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/CacheService/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
3
|
+
declare const _default: Effect.Effect<readonly import("effect/unstable/sql/SqlConnection").Row[], import("effect/unstable/sql/SqlError").SqlError, SqlClient.SqlClient>;
|
|
4
|
+
export default _default;
|
|
5
|
+
//# sourceMappingURL=0017_sandbox_region.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0017_sandbox_region.d.ts","sourceRoot":"","sources":["../../../src/CacheService/migrations/0017_sandbox_region.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0017_sandbox_region.js","sourceRoot":"","sources":["../../../src/CacheService/migrations/0017_sandbox_region.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,eAAe,MAAM,CAAC,OAAO,CAC3B,SAAS,CAAC,SAAS,EACnB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAA,8CAA8C,CAC3D,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
3
|
+
/** Re-key cached PR rows so repository and region are part of durable identity. */
|
|
4
|
+
declare const _default: Effect.Effect<void, import("effect/unstable/sql/SqlError").SqlError, SqlClient.SqlClient>;
|
|
5
|
+
export default _default;
|
|
6
|
+
//# sourceMappingURL=0018_pull_request_coordinates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0018_pull_request_coordinates.d.ts","sourceRoot":"","sources":["../../../src/CacheService/migrations/0018_pull_request_coordinates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,mFAAmF"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
3
|
+
/** Re-key cached PR rows so repository and region are part of durable identity. */
|
|
4
|
+
export default Effect.flatMap(SqlClient.SqlClient, (sql) => Effect.gen(function* () {
|
|
5
|
+
yield* sql `DROP TRIGGER IF EXISTS pull_requests_ai`;
|
|
6
|
+
yield* sql `DROP TRIGGER IF EXISTS pull_requests_ad`;
|
|
7
|
+
yield* sql `DROP TRIGGER IF EXISTS pull_requests_au`;
|
|
8
|
+
yield* sql `DROP TABLE IF EXISTS pull_requests_fts`;
|
|
9
|
+
yield* sql `CREATE TABLE pull_requests_coordinates_new (
|
|
10
|
+
id TEXT NOT NULL,
|
|
11
|
+
aws_account_id TEXT NOT NULL,
|
|
12
|
+
repo_account_id TEXT,
|
|
13
|
+
account_profile TEXT NOT NULL,
|
|
14
|
+
account_region TEXT NOT NULL,
|
|
15
|
+
title TEXT NOT NULL,
|
|
16
|
+
description TEXT,
|
|
17
|
+
author TEXT NOT NULL,
|
|
18
|
+
repository_name TEXT NOT NULL,
|
|
19
|
+
creation_date TEXT NOT NULL,
|
|
20
|
+
last_modified_date TEXT NOT NULL,
|
|
21
|
+
status TEXT NOT NULL,
|
|
22
|
+
source_branch TEXT NOT NULL,
|
|
23
|
+
destination_branch TEXT NOT NULL,
|
|
24
|
+
is_mergeable INTEGER NOT NULL DEFAULT 0,
|
|
25
|
+
is_approved INTEGER NOT NULL DEFAULT 0,
|
|
26
|
+
comment_count INTEGER,
|
|
27
|
+
link TEXT NOT NULL,
|
|
28
|
+
fetched_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
29
|
+
files_added INTEGER,
|
|
30
|
+
files_modified INTEGER,
|
|
31
|
+
files_deleted INTEGER,
|
|
32
|
+
health_score REAL,
|
|
33
|
+
closed_at TEXT,
|
|
34
|
+
merged_by TEXT,
|
|
35
|
+
approved_by TEXT,
|
|
36
|
+
commented_by TEXT,
|
|
37
|
+
approval_rules TEXT DEFAULT '[]',
|
|
38
|
+
approved_by_arns TEXT,
|
|
39
|
+
PRIMARY KEY (aws_account_id, id, repository_name, account_region)
|
|
40
|
+
)`;
|
|
41
|
+
yield* sql `INSERT INTO pull_requests_coordinates_new (
|
|
42
|
+
id, aws_account_id, repo_account_id, account_profile, account_region,
|
|
43
|
+
title, description, author, repository_name, creation_date,
|
|
44
|
+
last_modified_date, status, source_branch, destination_branch,
|
|
45
|
+
is_mergeable, is_approved, comment_count, link, fetched_at,
|
|
46
|
+
files_added, files_modified, files_deleted, health_score, closed_at, merged_by,
|
|
47
|
+
approved_by, commented_by, approval_rules, approved_by_arns
|
|
48
|
+
) SELECT
|
|
49
|
+
id, aws_account_id, repo_account_id, account_profile, account_region,
|
|
50
|
+
title, description, author, repository_name, creation_date,
|
|
51
|
+
last_modified_date, status, source_branch, destination_branch,
|
|
52
|
+
is_mergeable, is_approved, comment_count, link, fetched_at,
|
|
53
|
+
files_added, files_modified, files_deleted, health_score, closed_at, merged_by,
|
|
54
|
+
approved_by, commented_by, approval_rules, approved_by_arns
|
|
55
|
+
FROM pull_requests`;
|
|
56
|
+
yield* sql `DROP TABLE pull_requests`;
|
|
57
|
+
yield* sql `ALTER TABLE pull_requests_coordinates_new RENAME TO pull_requests`;
|
|
58
|
+
yield* sql `CREATE INDEX IF NOT EXISTS idx_pr_creation_date ON pull_requests(creation_date)`;
|
|
59
|
+
yield* sql `CREATE INDEX IF NOT EXISTS idx_pr_status ON pull_requests(status)`;
|
|
60
|
+
yield* sql `CREATE INDEX IF NOT EXISTS idx_pr_author ON pull_requests(author)`;
|
|
61
|
+
yield* sql `CREATE INDEX IF NOT EXISTS idx_pr_last_modified ON pull_requests(last_modified_date)`;
|
|
62
|
+
yield* sql `CREATE VIRTUAL TABLE pull_requests_fts USING fts5(
|
|
63
|
+
title, description, author, repository_name,
|
|
64
|
+
content='pull_requests', content_rowid='rowid'
|
|
65
|
+
)`;
|
|
66
|
+
yield* sql `CREATE TRIGGER pull_requests_ai AFTER INSERT ON pull_requests BEGIN
|
|
67
|
+
INSERT INTO pull_requests_fts(rowid, title, description, author, repository_name)
|
|
68
|
+
VALUES (new.rowid, new.title, new.description, new.author, new.repository_name);
|
|
69
|
+
END`;
|
|
70
|
+
yield* sql `CREATE TRIGGER pull_requests_ad AFTER DELETE ON pull_requests BEGIN
|
|
71
|
+
INSERT INTO pull_requests_fts(pull_requests_fts, rowid, title, description, author, repository_name)
|
|
72
|
+
VALUES ('delete', old.rowid, old.title, old.description, old.author, old.repository_name);
|
|
73
|
+
END`;
|
|
74
|
+
yield* sql `CREATE TRIGGER pull_requests_au AFTER UPDATE ON pull_requests BEGIN
|
|
75
|
+
INSERT INTO pull_requests_fts(pull_requests_fts, rowid, title, description, author, repository_name)
|
|
76
|
+
VALUES ('delete', old.rowid, old.title, old.description, old.author, old.repository_name);
|
|
77
|
+
INSERT INTO pull_requests_fts(rowid, title, description, author, repository_name)
|
|
78
|
+
VALUES (new.rowid, new.title, new.description, new.author, new.repository_name);
|
|
79
|
+
END`;
|
|
80
|
+
yield* sql `INSERT INTO pull_requests_fts(pull_requests_fts) VALUES ('rebuild')`;
|
|
81
|
+
}));
|
|
82
|
+
//# sourceMappingURL=0018_pull_request_coordinates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0018_pull_request_coordinates.js","sourceRoot":"","sources":["../../../src/CacheService/migrations/0018_pull_request_coordinates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,mFAAmF;AACnF,eAAe,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACzD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,GAAG,CAAA,yCAAyC,CAAA;IACnD,KAAK,CAAC,CAAC,GAAG,CAAA,yCAAyC,CAAA;IACnD,KAAK,CAAC,CAAC,GAAG,CAAA,yCAAyC,CAAA;IACnD,KAAK,CAAC,CAAC,GAAG,CAAA,wCAAwC,CAAA;IAClD,KAAK,CAAC,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+BR,CAAA;IACF,KAAK,CAAC,CAAC,GAAG,CAAA;;;;;;;;;;;;;;yBAcW,CAAA;IACrB,KAAK,CAAC,CAAC,GAAG,CAAA,0BAA0B,CAAA;IACpC,KAAK,CAAC,CAAC,GAAG,CAAA,mEAAmE,CAAA;IAC7E,KAAK,CAAC,CAAC,GAAG,CAAA,iFAAiF,CAAA;IAC3F,KAAK,CAAC,CAAC,GAAG,CAAA,mEAAmE,CAAA;IAC7E,KAAK,CAAC,CAAC,GAAG,CAAA,mEAAmE,CAAA;IAC7E,KAAK,CAAC,CAAC,GAAG,CAAA,sFAAsF,CAAA;IAChG,KAAK,CAAC,CAAC,GAAG,CAAA;;;MAGR,CAAA;IACF,KAAK,CAAC,CAAC,GAAG,CAAA;;;QAGN,CAAA;IACJ,KAAK,CAAC,CAAC,GAAG,CAAA;;;QAGN,CAAA;IACJ,KAAK,CAAC,CAAC,GAAG,CAAA;;;;;QAKN,CAAA;IACJ,KAAK,CAAC,CAAC,GAAG,CAAA,qEAAqE,CAAA;AACjF,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
3
|
+
/** Backfill uniquely attributable dependent rows while retaining ambiguous/orphan sentinels. */
|
|
4
|
+
declare const _default: Effect.Effect<void, import("effect/unstable/sql/SqlError").SqlError, SqlClient.SqlClient>;
|
|
5
|
+
export default _default;
|
|
6
|
+
//# sourceMappingURL=0019_dependent_pr_coordinates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0019_dependent_pr_coordinates.d.ts","sourceRoot":"","sources":["../../../src/CacheService/migrations/0019_dependent_pr_coordinates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,gGAAgG"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
3
|
+
/** Backfill uniquely attributable dependent rows while retaining ambiguous/orphan sentinels. */
|
|
4
|
+
export default Effect.flatMap(SqlClient.SqlClient, (sql) => Effect.gen(function* () {
|
|
5
|
+
yield* sql `CREATE TABLE pr_comments_coordinates_new (
|
|
6
|
+
pull_request_id TEXT NOT NULL,
|
|
7
|
+
aws_account_id TEXT NOT NULL,
|
|
8
|
+
repository_name TEXT NOT NULL DEFAULT '',
|
|
9
|
+
account_region TEXT NOT NULL DEFAULT '',
|
|
10
|
+
locations_json TEXT NOT NULL,
|
|
11
|
+
fetched_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
12
|
+
PRIMARY KEY (aws_account_id, pull_request_id, repository_name, account_region)
|
|
13
|
+
)`;
|
|
14
|
+
yield* sql `INSERT INTO pr_comments_coordinates_new (
|
|
15
|
+
pull_request_id, aws_account_id, repository_name, account_region, locations_json, fetched_at
|
|
16
|
+
) SELECT pull_request_id, aws_account_id,
|
|
17
|
+
CASE WHEN (SELECT count(*) FROM pull_requests p
|
|
18
|
+
WHERE p.aws_account_id = pr_comments.aws_account_id AND p.id = pr_comments.pull_request_id) = 1
|
|
19
|
+
THEN (SELECT p.repository_name FROM pull_requests p
|
|
20
|
+
WHERE p.aws_account_id = pr_comments.aws_account_id AND p.id = pr_comments.pull_request_id)
|
|
21
|
+
ELSE '' END,
|
|
22
|
+
CASE WHEN (SELECT count(*) FROM pull_requests p
|
|
23
|
+
WHERE p.aws_account_id = pr_comments.aws_account_id AND p.id = pr_comments.pull_request_id) = 1
|
|
24
|
+
THEN (SELECT p.account_region FROM pull_requests p
|
|
25
|
+
WHERE p.aws_account_id = pr_comments.aws_account_id AND p.id = pr_comments.pull_request_id)
|
|
26
|
+
ELSE '' END,
|
|
27
|
+
locations_json, fetched_at
|
|
28
|
+
FROM pr_comments`;
|
|
29
|
+
yield* sql `DROP TABLE pr_comments`;
|
|
30
|
+
yield* sql `ALTER TABLE pr_comments_coordinates_new RENAME TO pr_comments`;
|
|
31
|
+
yield* sql `CREATE TABLE pr_subscriptions_coordinates_new (
|
|
32
|
+
pull_request_id TEXT NOT NULL,
|
|
33
|
+
aws_account_id TEXT NOT NULL,
|
|
34
|
+
repository_name TEXT NOT NULL DEFAULT '',
|
|
35
|
+
account_region TEXT NOT NULL DEFAULT '',
|
|
36
|
+
subscribed_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
37
|
+
PRIMARY KEY (aws_account_id, pull_request_id, repository_name, account_region)
|
|
38
|
+
)`;
|
|
39
|
+
yield* sql `INSERT INTO pr_subscriptions_coordinates_new (
|
|
40
|
+
pull_request_id, aws_account_id, repository_name, account_region, subscribed_at
|
|
41
|
+
) SELECT pull_request_id, aws_account_id,
|
|
42
|
+
CASE WHEN (SELECT count(*) FROM pull_requests p
|
|
43
|
+
WHERE p.aws_account_id = pr_subscriptions.aws_account_id AND p.id = pr_subscriptions.pull_request_id) = 1
|
|
44
|
+
THEN (SELECT p.repository_name FROM pull_requests p
|
|
45
|
+
WHERE p.aws_account_id = pr_subscriptions.aws_account_id AND p.id = pr_subscriptions.pull_request_id)
|
|
46
|
+
ELSE '' END,
|
|
47
|
+
CASE WHEN (SELECT count(*) FROM pull_requests p
|
|
48
|
+
WHERE p.aws_account_id = pr_subscriptions.aws_account_id AND p.id = pr_subscriptions.pull_request_id) = 1
|
|
49
|
+
THEN (SELECT p.account_region FROM pull_requests p
|
|
50
|
+
WHERE p.aws_account_id = pr_subscriptions.aws_account_id AND p.id = pr_subscriptions.pull_request_id)
|
|
51
|
+
ELSE '' END,
|
|
52
|
+
subscribed_at
|
|
53
|
+
FROM pr_subscriptions`;
|
|
54
|
+
yield* sql `DROP TABLE pr_subscriptions`;
|
|
55
|
+
yield* sql `ALTER TABLE pr_subscriptions_coordinates_new RENAME TO pr_subscriptions`;
|
|
56
|
+
}));
|
|
57
|
+
//# sourceMappingURL=0019_dependent_pr_coordinates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0019_dependent_pr_coordinates.js","sourceRoot":"","sources":["../../../src/CacheService/migrations/0019_dependent_pr_coordinates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,gGAAgG;AAChG,eAAe,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CACzD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,GAAG,CAAA;;;;;;;;MAQR,CAAA;IACF,KAAK,CAAC,CAAC,GAAG,CAAA;;;;;;;;;;;;;;uBAcS,CAAA;IACnB,KAAK,CAAC,CAAC,GAAG,CAAA,wBAAwB,CAAA;IAClC,KAAK,CAAC,CAAC,GAAG,CAAA,+DAA+D,CAAA;IAEzE,KAAK,CAAC,CAAC,GAAG,CAAA;;;;;;;MAOR,CAAA;IACF,KAAK,CAAC,CAAC,GAAG,CAAA;;;;;;;;;;;;;;4BAcc,CAAA;IACxB,KAAK,CAAC,CAAC,GAAG,CAAA,6BAA6B,CAAA;IACvC,KAAK,CAAC,CAAC,GAAG,CAAA,yEAAyE,CAAA;AACrF,CAAC,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
3
|
+
/** Add exact PR coordinates to notifications while retaining legacy rows as unqualified. */
|
|
4
|
+
declare const _default: Effect.Effect<void, any, SqlClient.SqlClient>;
|
|
5
|
+
export default _default;
|
|
6
|
+
//# sourceMappingURL=0020_notification_coordinates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0020_notification_coordinates.d.ts","sourceRoot":"","sources":["../../../src/CacheService/migrations/0020_notification_coordinates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAgB1D,4FAA4F"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as Effect from "effect/Effect";
|
|
2
|
+
import * as Predicate from "effect/Predicate";
|
|
3
|
+
import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
4
|
+
import * as SqlError from "effect/unstable/sql/SqlError";
|
|
5
|
+
/** Only an already-present column is safe to treat as migration idempotence. */
|
|
6
|
+
const isDuplicateColumnError = (error) => {
|
|
7
|
+
if (!SqlError.isSqlError(error))
|
|
8
|
+
return false;
|
|
9
|
+
const reasonMessage = error.reason.message;
|
|
10
|
+
if (reasonMessage !== undefined && /duplicate column name/i.test(reasonMessage))
|
|
11
|
+
return true;
|
|
12
|
+
const cause = error.reason.cause;
|
|
13
|
+
return Predicate.hasProperty(cause, "message") &&
|
|
14
|
+
Predicate.isString(cause.message) &&
|
|
15
|
+
/duplicate column name/i.test(cause.message);
|
|
16
|
+
};
|
|
17
|
+
/** Add exact PR coordinates to notifications while retaining legacy rows as unqualified. */
|
|
18
|
+
export default Effect.flatMap(SqlClient.SqlClient, (sql) => Effect.all([
|
|
19
|
+
sql `ALTER TABLE notifications ADD COLUMN repository_name TEXT NOT NULL DEFAULT ''`.pipe(Effect.catchIf(isDuplicateColumnError, () => Effect.void)),
|
|
20
|
+
sql `ALTER TABLE notifications ADD COLUMN account_region TEXT NOT NULL DEFAULT ''`.pipe(Effect.catchIf(isDuplicateColumnError, () => Effect.void))
|
|
21
|
+
]).pipe(Effect.asVoid));
|
|
22
|
+
//# sourceMappingURL=0020_notification_coordinates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"0020_notification_coordinates.js","sourceRoot":"","sources":["../../../src/CacheService/migrations/0020_notification_coordinates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,QAAQ,MAAM,8BAA8B,CAAA;AAExD,gFAAgF;AAChF,MAAM,sBAAsB,GAAqD,CAC/E,KAAK,EACuB,EAAE;IAC9B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7C,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAA;IAC1C,IAAI,aAAa,KAAK,SAAS,IAAI,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAA;IAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAA;IAChC,OAAO,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC;QAC5C,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QACjC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,4FAA4F;AAC5F,eAAe,MAAM,CAAC,OAAO,CAC3B,SAAS,CAAC,SAAS,EACnB,CAAC,GAAG,EAAE,EAAE,CACN,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,CAAA,+EAA+E,CAAC,IAAI,CACrF,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC1D;IACD,GAAG,CAAA,8EAA8E,CAAC,IAAI,CACpF,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAC1D;CACF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CACzB,CAAA"}
|
|
@@ -4,9 +4,13 @@ import * as SqlClient from "effect/unstable/sql/SqlClient";
|
|
|
4
4
|
import type { PRCommentLocation } from "../../Domain.js";
|
|
5
5
|
import { CacheError } from "../CacheError.js";
|
|
6
6
|
import { EventsHub } from "../EventsHub.js";
|
|
7
|
+
export interface CommentCoordinates {
|
|
8
|
+
readonly repositoryName: string;
|
|
9
|
+
readonly accountRegion: string;
|
|
10
|
+
}
|
|
7
11
|
declare const makeCommentRepo: Effect.Effect<{
|
|
8
|
-
find: (awsAccountId: string, prId: string) => Effect.Effect<Option.Option<readonly PRCommentLocation[]>, CacheError, never>;
|
|
9
|
-
upsert: (awsAccountId: string, prId: string, locationsJson: string) => Effect.Effect<void, CacheError, never>;
|
|
12
|
+
find: (awsAccountId: string, prId: string, coordinates?: CommentCoordinates) => Effect.Effect<Option.Option<readonly PRCommentLocation[]>, CacheError, never>;
|
|
13
|
+
upsert: (awsAccountId: string, prId: string, locationsJson: string, coordinates?: CommentCoordinates) => Effect.Effect<void, CacheError, never>;
|
|
10
14
|
}, never, EventsHub | SqlClient.SqlClient>;
|
|
11
15
|
export interface CommentRepoContract extends Success<typeof makeCommentRepo> {
|
|
12
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentRepo.d.ts","sourceRoot":"","sources":["../../../src/CacheService/repos/CommentRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"CommentRepo.d.ts","sourceRoot":"","sources":["../../../src/CacheService/repos/CommentRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAOvD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAC/B;AAUD,QAAA,MAAM,eAAe;yBAyDI,MAAM,QAAQ,MAAM,gBAAgB,kBAAkB;2BAoBpD,MAAM,QAAQ,MAAM,iBAAiB,MAAM,gBAAgB,kBAAkB;0CAKtG,CAAA;AAEF,MAAM,WAAW,mBAAoB,SAAQ,OAAO,CAAC,OAAO,eAAe,CAAC;CAAG;;AAE/E,qBAAa,WAAY,SAAQ,gBAGf;IAChB,MAAM,CAAC,QAAQ,CAAC,OAAO,mMAEtB;CACF"}
|
|
@@ -8,28 +8,67 @@ import { decodeCommentLocations } from "./commentLocations.js";
|
|
|
8
8
|
const CommentRow = Schema.Struct({
|
|
9
9
|
locationsJson: Schema.String
|
|
10
10
|
});
|
|
11
|
+
const legacyCoordinate = "";
|
|
11
12
|
const cacheError = (op) => (effect) => effect.pipe(Effect.mapError((cause) => new CacheError({ operation: `CommentRepo.${op}`, cause })), Effect.withSpan(`CommentRepo.${op}`));
|
|
12
13
|
const makeCommentRepo = Effect.gen(function* () {
|
|
13
14
|
const sql = yield* SqlClient.SqlClient;
|
|
14
15
|
const hub = yield* EventsHub;
|
|
15
|
-
const
|
|
16
|
+
const findLegacy_ = SqlSchema.findOneOption({
|
|
16
17
|
Result: CommentRow,
|
|
17
18
|
Request: Schema.Struct({ awsAccountId: Schema.String, pullRequestId: Schema.String }),
|
|
18
19
|
execute: (req) => sql `SELECT locations_json FROM pr_comments
|
|
19
20
|
WHERE aws_account_id = ${req.awsAccountId}
|
|
20
|
-
AND pull_request_id = ${req.pullRequestId}
|
|
21
|
+
AND pull_request_id = ${req.pullRequestId}
|
|
22
|
+
AND repository_name = ${legacyCoordinate}
|
|
23
|
+
AND account_region = ${legacyCoordinate}`
|
|
21
24
|
});
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
const findExact_ = SqlSchema.findOneOption({
|
|
26
|
+
Result: CommentRow,
|
|
27
|
+
Request: Schema.Struct({
|
|
28
|
+
awsAccountId: Schema.String,
|
|
29
|
+
pullRequestId: Schema.String,
|
|
30
|
+
repositoryName: Schema.String,
|
|
31
|
+
accountRegion: Schema.String
|
|
32
|
+
}),
|
|
33
|
+
execute: (req) => sql `SELECT locations_json FROM pr_comments
|
|
34
|
+
WHERE aws_account_id = ${req.awsAccountId}
|
|
35
|
+
AND pull_request_id = ${req.pullRequestId}
|
|
36
|
+
AND (
|
|
37
|
+
(repository_name = ${req.repositoryName} AND account_region = ${req.accountRegion})
|
|
38
|
+
OR (
|
|
39
|
+
repository_name = ${legacyCoordinate}
|
|
40
|
+
AND account_region = ${legacyCoordinate}
|
|
41
|
+
AND (
|
|
42
|
+
SELECT count(*) FROM pull_requests
|
|
43
|
+
WHERE aws_account_id = ${req.awsAccountId} AND id = ${req.pullRequestId}
|
|
44
|
+
) = 1
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
ORDER BY CASE
|
|
48
|
+
WHEN repository_name = ${req.repositoryName} AND account_region = ${req.accountRegion} THEN 0
|
|
49
|
+
ELSE 1
|
|
50
|
+
END
|
|
51
|
+
LIMIT 1`
|
|
52
|
+
});
|
|
53
|
+
const upsert_ = (awsAccountId, prId, locationsJson, coordinates) => sql `INSERT OR REPLACE INTO pr_comments
|
|
54
|
+
(aws_account_id, pull_request_id, repository_name, account_region, locations_json, fetched_at)
|
|
55
|
+
VALUES (${awsAccountId}, ${prId}, ${coordinates?.repositoryName ?? legacyCoordinate}, ${coordinates?.accountRegion ?? legacyCoordinate},
|
|
56
|
+
${locationsJson}, datetime('now'))
|
|
25
57
|
`.pipe(Effect.asVoid);
|
|
26
58
|
const publish = hub.publish(RepoChange.Comments());
|
|
27
59
|
const repo = {
|
|
28
|
-
find: (awsAccountId, prId) =>
|
|
60
|
+
find: (awsAccountId, prId, coordinates) => (coordinates === undefined
|
|
61
|
+
? findLegacy_({ awsAccountId, pullRequestId: prId })
|
|
62
|
+
: findExact_({
|
|
63
|
+
awsAccountId,
|
|
64
|
+
pullRequestId: prId,
|
|
65
|
+
repositoryName: coordinates.repositoryName,
|
|
66
|
+
accountRegion: coordinates.accountRegion
|
|
67
|
+
})).pipe(Effect.flatMap(Option.match({
|
|
29
68
|
onNone: () => Effect.succeed(Option.none()),
|
|
30
69
|
onSome: (r) => decodeCommentLocations(r.locationsJson).pipe(Effect.map((decoded) => Option.some(decoded)))
|
|
31
70
|
})), cacheError("find")),
|
|
32
|
-
upsert: (awsAccountId, prId, locationsJson) => upsert_(awsAccountId, prId, locationsJson).pipe(Effect.tap(() => publish), cacheError("upsert"))
|
|
71
|
+
upsert: (awsAccountId, prId, locationsJson, coordinates) => upsert_(awsAccountId, prId, locationsJson, coordinates).pipe(Effect.tap(() => publish), cacheError("upsert"))
|
|
33
72
|
};
|
|
34
73
|
return repo;
|
|
35
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommentRepo.js","sourceRoot":"","sources":["../../../src/CacheService/repos/CommentRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/D,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE9D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC,MAAM;CAC7B,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"CommentRepo.js","sourceRoot":"","sources":["../../../src/CacheService/repos/CommentRepo.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ declare const NotificationRow: Schema.Struct<{
|
|
|
12
12
|
readonly message: Schema.String;
|
|
13
13
|
readonly title: Schema.String;
|
|
14
14
|
readonly profile: Schema.String;
|
|
15
|
+
readonly repositoryName: Schema.String;
|
|
16
|
+
readonly accountRegion: Schema.String;
|
|
15
17
|
readonly createdAt: Schema.String;
|
|
16
18
|
readonly read: Schema.Number;
|
|
17
19
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationRepo.d.ts","sourceRoot":"","sources":["../../../src/CacheService/repos/NotificationRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAEvD,QAAA,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"NotificationRepo.d.ts","sourceRoot":"","sources":["../../../src/CacheService/repos/NotificationRepo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAEvD,QAAA,MAAM,eAAe;;;;;;;;;;;;EAYnB,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AACzD,YAAY,EAAE,eAAe,EAAE,CAAA;AAM/B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,eAAe,CAAC,CAAA;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC7B;AAiBD,QAAA,MAAM,oBAAoB;qBA4EL;QACf,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;QAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;KACnC,KAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,UAAU,CAAC;aAoB5C,eAAe;mBAET;QACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;QACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAC/B;mBAwBc,MAAM;qBAEJ,MAAM;;;0CAWzB,CAAA;AAEF,MAAM,WAAW,wBAAyB,SAAQ,OAAO,CAAC,OAAO,oBAAoB,CAAC;CAAG;;AAEzF,qBAAa,gBAAiB,SAAQ,qBAGf;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,wMAEtB;CACF"}
|
|
@@ -12,6 +12,8 @@ const NotificationRow = Schema.Struct({
|
|
|
12
12
|
message: Schema.String,
|
|
13
13
|
title: Schema.String,
|
|
14
14
|
profile: Schema.String,
|
|
15
|
+
repositoryName: Schema.String,
|
|
16
|
+
accountRegion: Schema.String,
|
|
15
17
|
createdAt: Schema.String,
|
|
16
18
|
read: Schema.Number
|
|
17
19
|
});
|
|
@@ -77,8 +79,13 @@ const makeNotificationRepo = Effect.gen(function* () {
|
|
|
77
79
|
return sql `SELECT * FROM notifications WHERE id < ${req.cursor} ORDER BY id DESC LIMIT ${req.limit}`;
|
|
78
80
|
}
|
|
79
81
|
});
|
|
80
|
-
const add_ = (n) => Clock.currentTimeMillis.pipe(Effect.flatMap((nowMs) => sql `INSERT INTO notifications (
|
|
81
|
-
|
|
82
|
+
const add_ = (n) => Clock.currentTimeMillis.pipe(Effect.flatMap((nowMs) => sql `INSERT INTO notifications (
|
|
83
|
+
pull_request_id, aws_account_id, type, message, title, profile,
|
|
84
|
+
repository_name, account_region, created_at
|
|
85
|
+
) VALUES (
|
|
86
|
+
${n.pullRequestId}, ${n.awsAccountId}, ${n.type}, ${n.message}, ${n.title ?? ""}, ${n.profile ?? ""},
|
|
87
|
+
${n.repositoryName ?? ""}, ${n.accountRegion ?? ""}, ${new Date(nowMs).toISOString()}
|
|
88
|
+
)`), Effect.asVoid);
|
|
82
89
|
const markRead_ = (id) => sql `UPDATE notifications SET read = 1 WHERE id = ${id}`.pipe(Effect.asVoid);
|
|
83
90
|
const markUnread_ = (id) => sql `UPDATE notifications SET read = 0 WHERE id = ${id}`.pipe(Effect.asVoid);
|
|
84
91
|
const markAllRead_ = () => sql `UPDATE notifications SET read = 1 WHERE read = 0`.pipe(Effect.asVoid);
|
|
@@ -105,7 +112,7 @@ const makeNotificationRepo = Effect.gen(function* () {
|
|
|
105
112
|
title: n.title,
|
|
106
113
|
profile: n.profile ?? ""
|
|
107
114
|
}).pipe(Effect.tap(() => publish));
|
|
108
|
-
if (
|
|
115
|
+
if (n.deduplicate !== true) {
|
|
109
116
|
return insert.pipe(cacheError("addSystem"));
|
|
110
117
|
}
|
|
111
118
|
// Skip if an unread system notification with same profile+type already exists
|