@knpkv/codecommit-core 0.19.0 → 0.20.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 +0 -2
- package/dist/AwsClient/AwsClientGated.js.map +1 -1
- package/dist/AwsClient/approvalRuleContent.d.ts +2 -1
- package/dist/AwsClient/approvalRuleContent.d.ts.map +1 -1
- package/dist/AwsClient/approvalRuleContent.js +25 -18
- package/dist/AwsClient/approvalRuleContent.js.map +1 -1
- package/dist/AwsClient/getPullRequest.d.ts.map +1 -1
- package/dist/AwsClient/getPullRequest.js +19 -10
- package/dist/AwsClient/getPullRequest.js.map +1 -1
- package/dist/AwsClient/getPullRequests.d.ts +30 -23
- package/dist/AwsClient/getPullRequests.d.ts.map +1 -1
- package/dist/AwsClient/getPullRequests.js +47 -32
- package/dist/AwsClient/getPullRequests.js.map +1 -1
- package/dist/AwsClient/index.d.ts +1 -10
- package/dist/AwsClient/index.d.ts.map +1 -1
- package/dist/AwsClient/index.js +0 -1
- package/dist/AwsClient/index.js.map +1 -1
- package/dist/AwsClient/internal.d.ts +11 -1
- package/dist/AwsClient/internal.d.ts.map +1 -1
- package/dist/AwsClient/internal.js +7 -0
- package/dist/AwsClient/internal.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 +6 -2
- package/dist/CacheService/Database.js.map +1 -1
- package/dist/CacheService/diff.d.ts +10 -0
- package/dist/CacheService/diff.d.ts.map +1 -1
- package/dist/CacheService/diff.js +12 -1
- package/dist/CacheService/diff.js.map +1 -1
- package/dist/CacheService/migrations/0022_pull_request_approval_unknown.d.ts +9 -0
- package/dist/CacheService/migrations/0022_pull_request_approval_unknown.d.ts.map +1 -0
- package/dist/CacheService/migrations/0022_pull_request_approval_unknown.js +8 -0
- package/dist/CacheService/migrations/0022_pull_request_approval_unknown.js.map +1 -0
- package/dist/CacheService/migrations/0023_pull_request_row_versions.d.ts +17 -0
- package/dist/CacheService/migrations/0023_pull_request_row_versions.d.ts.map +1 -0
- package/dist/CacheService/migrations/0023_pull_request_row_versions.js +37 -0
- package/dist/CacheService/migrations/0023_pull_request_row_versions.js.map +1 -0
- package/dist/CacheService/repos/PullRequestRepo/index.d.ts +34 -8
- package/dist/CacheService/repos/PullRequestRepo/index.d.ts.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/index.js +1 -1
- package/dist/CacheService/repos/PullRequestRepo/index.js.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/internal.d.ts +69 -2
- package/dist/CacheService/repos/PullRequestRepo/internal.d.ts.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/internal.js +73 -2
- package/dist/CacheService/repos/PullRequestRepo/internal.js.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/mutations.d.ts +39 -16
- package/dist/CacheService/repos/PullRequestRepo/mutations.d.ts.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/mutations.js +61 -92
- package/dist/CacheService/repos/PullRequestRepo/mutations.js.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/queries.d.ts +24 -0
- package/dist/CacheService/repos/PullRequestRepo/queries.d.ts.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/queries.js +10 -3
- package/dist/CacheService/repos/PullRequestRepo/queries.js.map +1 -1
- package/dist/CacheService/repos/PullRequestRepo/rowWrites.d.ts +131 -0
- package/dist/CacheService/repos/PullRequestRepo/rowWrites.d.ts.map +1 -0
- package/dist/CacheService/repos/PullRequestRepo/rowWrites.js +214 -0
- package/dist/CacheService/repos/PullRequestRepo/rowWrites.js.map +1 -0
- package/dist/CacheService/repos/StatsRepo/internal.d.ts +0 -1
- package/dist/CacheService/repos/StatsRepo/internal.d.ts.map +1 -1
- package/dist/CacheService/repos/StatsRepo/internal.js.map +1 -1
- package/dist/CacheService/repos/StatsRepo/queries.d.ts.map +1 -1
- package/dist/CacheService/repos/StatsRepo/queries.js +2 -1
- package/dist/CacheService/repos/StatsRepo/queries.js.map +1 -1
- package/dist/CacheService/repos/StatsRepo/reviewerData.d.ts.map +1 -1
- package/dist/CacheService/repos/StatsRepo/reviewerData.js +1 -2
- package/dist/CacheService/repos/StatsRepo/reviewerData.js.map +1 -1
- package/dist/Domain.d.ts +70 -0
- package/dist/Domain.d.ts.map +1 -1
- package/dist/Domain.js +55 -1
- package/dist/Domain.js.map +1 -1
- package/dist/HealthScore.d.ts +1 -1
- package/dist/HealthScore.d.ts.map +1 -1
- package/dist/HealthScore.js +20 -5
- package/dist/HealthScore.js.map +1 -1
- package/dist/PRService/internal.d.ts +17 -1
- package/dist/PRService/internal.d.ts.map +1 -1
- package/dist/PRService/internal.js +8 -0
- package/dist/PRService/internal.js.map +1 -1
- package/dist/PRService/refreshDiffs.d.ts.map +1 -1
- package/dist/PRService/refreshDiffs.js +8 -5
- package/dist/PRService/refreshDiffs.js.map +1 -1
- package/dist/PRService/refreshEnrich.d.ts.map +1 -1
- package/dist/PRService/refreshEnrich.js +26 -45
- package/dist/PRService/refreshEnrich.js.map +1 -1
- package/dist/PRService/refreshFetch.d.ts +1 -1
- package/dist/PRService/refreshFetch.d.ts.map +1 -1
- package/dist/PRService/refreshFetch.js +89 -74
- package/dist/PRService/refreshFetch.js.map +1 -1
- package/dist/PRService/refreshHistory.d.ts.map +1 -1
- package/dist/PRService/refreshHistory.js +17 -10
- package/dist/PRService/refreshHistory.js.map +1 -1
- package/dist/PRService/refreshScore.d.ts.map +1 -1
- package/dist/PRService/refreshScore.js +4 -2
- package/dist/PRService/refreshScore.js.map +1 -1
- package/dist/PRService/refreshSinglePR.d.ts.map +1 -1
- package/dist/PRService/refreshSinglePR.js +44 -25
- package/dist/PRService/refreshSinglePR.js.map +1 -1
- package/package.json +1 -1
|
@@ -32,11 +32,15 @@ export declare const findAll: (sql: SqlClient.SqlClient) => () => Effect.Effect<
|
|
|
32
32
|
readonly repositoryName: string & import("effect/Brand").Brand<"RepositoryName">;
|
|
33
33
|
readonly creationDate: Date;
|
|
34
34
|
readonly lastModifiedDate: Date;
|
|
35
|
+
readonly observationSeq: number;
|
|
36
|
+
readonly approvalVersion: Date;
|
|
37
|
+
readonly approvalObservationSeq: number;
|
|
35
38
|
readonly status: "CLOSED" | "MERGED" | "OPEN";
|
|
36
39
|
readonly sourceBranch: string;
|
|
37
40
|
readonly destinationBranch: string;
|
|
38
41
|
readonly isMergeable: boolean;
|
|
39
42
|
readonly isApproved: boolean;
|
|
43
|
+
readonly approvalUnknownReason: "NotPermitted" | "ProviderFailed" | "Throttled" | null;
|
|
40
44
|
readonly commentCount: number | null;
|
|
41
45
|
readonly healthScore: number | null;
|
|
42
46
|
readonly link: string;
|
|
@@ -63,11 +67,15 @@ export declare const findMissingDiffStats: (sql: SqlClient.SqlClient) => () => E
|
|
|
63
67
|
readonly repositoryName: string & import("effect/Brand").Brand<"RepositoryName">;
|
|
64
68
|
readonly creationDate: Date;
|
|
65
69
|
readonly lastModifiedDate: Date;
|
|
70
|
+
readonly observationSeq: number;
|
|
71
|
+
readonly approvalVersion: Date;
|
|
72
|
+
readonly approvalObservationSeq: number;
|
|
66
73
|
readonly status: "CLOSED" | "MERGED" | "OPEN";
|
|
67
74
|
readonly sourceBranch: string;
|
|
68
75
|
readonly destinationBranch: string;
|
|
69
76
|
readonly isMergeable: boolean;
|
|
70
77
|
readonly isApproved: boolean;
|
|
78
|
+
readonly approvalUnknownReason: "NotPermitted" | "ProviderFailed" | "Throttled" | null;
|
|
71
79
|
readonly commentCount: number | null;
|
|
72
80
|
readonly healthScore: number | null;
|
|
73
81
|
readonly link: string;
|
|
@@ -94,11 +102,15 @@ export declare const findByAccountAndId: (sql: SqlClient.SqlClient) => (awsAccou
|
|
|
94
102
|
readonly repositoryName: string & import("effect/Brand").Brand<"RepositoryName">;
|
|
95
103
|
readonly creationDate: Date;
|
|
96
104
|
readonly lastModifiedDate: Date;
|
|
105
|
+
readonly observationSeq: number;
|
|
106
|
+
readonly approvalVersion: Date;
|
|
107
|
+
readonly approvalObservationSeq: number;
|
|
97
108
|
readonly status: "CLOSED" | "MERGED" | "OPEN";
|
|
98
109
|
readonly sourceBranch: string;
|
|
99
110
|
readonly destinationBranch: string;
|
|
100
111
|
readonly isMergeable: boolean;
|
|
101
112
|
readonly isApproved: boolean;
|
|
113
|
+
readonly approvalUnknownReason: "NotPermitted" | "ProviderFailed" | "Throttled" | null;
|
|
102
114
|
readonly commentCount: number | null;
|
|
103
115
|
readonly healthScore: number | null;
|
|
104
116
|
readonly link: string;
|
|
@@ -125,11 +137,15 @@ export declare const findByCoordinates: (sql: SqlClient.SqlClient) => (awsAccoun
|
|
|
125
137
|
readonly repositoryName: string & import("effect/Brand").Brand<"RepositoryName">;
|
|
126
138
|
readonly creationDate: Date;
|
|
127
139
|
readonly lastModifiedDate: Date;
|
|
140
|
+
readonly observationSeq: number;
|
|
141
|
+
readonly approvalVersion: Date;
|
|
142
|
+
readonly approvalObservationSeq: number;
|
|
128
143
|
readonly status: "CLOSED" | "MERGED" | "OPEN";
|
|
129
144
|
readonly sourceBranch: string;
|
|
130
145
|
readonly destinationBranch: string;
|
|
131
146
|
readonly isMergeable: boolean;
|
|
132
147
|
readonly isApproved: boolean;
|
|
148
|
+
readonly approvalUnknownReason: "NotPermitted" | "ProviderFailed" | "Throttled" | null;
|
|
133
149
|
readonly commentCount: number | null;
|
|
134
150
|
readonly healthScore: number | null;
|
|
135
151
|
readonly link: string;
|
|
@@ -154,6 +170,10 @@ export declare const findStaleOpen: (sql: SqlClient.SqlClient) => (olderThan: st
|
|
|
154
170
|
readonly repositoryName: string;
|
|
155
171
|
readonly accountProfile: string & import("effect/Brand").Brand<"AwsProfileName">;
|
|
156
172
|
readonly accountRegion: string & import("effect/Brand").Brand<"AwsRegion">;
|
|
173
|
+
readonly lastModifiedDate: Date;
|
|
174
|
+
readonly observationSeq: number;
|
|
175
|
+
readonly approvalVersion: Date;
|
|
176
|
+
readonly approvalObservationSeq: number;
|
|
157
177
|
}[], CacheError, never>;
|
|
158
178
|
export declare const findOpenInRange: (sql: SqlClient.SqlClient) => (weekStart: string, weekEnd: string) => Effect.Effect<{
|
|
159
179
|
readonly id: string;
|
|
@@ -161,6 +181,10 @@ export declare const findOpenInRange: (sql: SqlClient.SqlClient) => (weekStart:
|
|
|
161
181
|
readonly repositoryName: string;
|
|
162
182
|
readonly accountProfile: string & import("effect/Brand").Brand<"AwsProfileName">;
|
|
163
183
|
readonly accountRegion: string & import("effect/Brand").Brand<"AwsRegion">;
|
|
184
|
+
readonly lastModifiedDate: Date;
|
|
185
|
+
readonly observationSeq: number;
|
|
186
|
+
readonly approvalVersion: Date;
|
|
187
|
+
readonly approvalObservationSeq: number;
|
|
164
188
|
}[], CacheError, never>;
|
|
165
189
|
export {};
|
|
166
190
|
//# sourceMappingURL=queries.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../src/CacheService/repos/PullRequestRepo/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAQ,MAAM,EAAE,MAAM,EAAqB,MAAM,QAAQ,CAAA;AAChE,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAA4D,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;;;;AAE3G,sFAAsF;AACtF,qBAAa,yBAA0B,SAAQ,+BAA8C;IAC3F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAC;CAAG;
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../src/CacheService/repos/PullRequestRepo/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAQ,MAAM,EAAE,MAAM,EAAqB,MAAM,QAAQ,CAAA;AAChE,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAA4D,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;;;;AAE3G,sFAAsF;AACtF,qBAAa,yBAA0B,SAAQ,+BAA8C;IAC3F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAC;CAAG;AAeL,eAAO,MAAM,OAAO,QAAS,SAAS,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAQ/C,CAAA;AAED,eAAO,MAAM,oBAAoB,QAAS,SAAS,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAQ5D,CAAA;AAED,eAAO,MAAM,kBAAkB,QAAS,SAAS,CAAC,SAAS,oBAQnC,MAAM,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDA0BzC,CAAA;AAED,eAAO,MAAM,iBAAiB,QAAS,SAAS,CAAC,SAAS,oBAgBlC,MAAM,MAAM,MAAM,kBAAkB,MAAM,iBAAiB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAExF,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,SAAS,CAAC,SAAS,aAsBpC,MAAM,SACN;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,KAC3D,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,EAAE,KAAK,CAqBjD,CAAA;AAED,eAAO,MAAM,aAAa,QAAS,SAAS,CAAC,SAAS,iBAUjC,MAAM;;;;;;;;;;uBAC1B,CAAA;AAED,eAAO,MAAM,eAAe,QAAS,SAAS,CAAC,SAAS,iBAcnC,MAAM,WAAW,MAAM;;;;;;;;;;uBAC3C,CAAA"}
|
|
@@ -19,7 +19,12 @@ const StaleOpenRow = Schema.Struct({
|
|
|
19
19
|
awsAccountId: Schema.String,
|
|
20
20
|
repositoryName: Schema.String,
|
|
21
21
|
accountProfile: AwsProfileName,
|
|
22
|
-
accountRegion: AwsRegion
|
|
22
|
+
accountRegion: AwsRegion,
|
|
23
|
+
/** The row's version when read (with `observationSeq`); a write based on this read compares against it. */
|
|
24
|
+
lastModifiedDate: Schema.DateFromString,
|
|
25
|
+
observationSeq: Schema.Number,
|
|
26
|
+
approvalVersion: Schema.DateFromString,
|
|
27
|
+
approvalObservationSeq: Schema.Number
|
|
23
28
|
});
|
|
24
29
|
export const findAll = (sql) => {
|
|
25
30
|
const run = SqlSchema.findAll({
|
|
@@ -112,7 +117,8 @@ export const findStaleOpen = (sql) => {
|
|
|
112
117
|
const run = SqlSchema.findAll({
|
|
113
118
|
Result: StaleOpenRow,
|
|
114
119
|
Request: Schema.Struct({ olderThan: Schema.String }),
|
|
115
|
-
execute: (req) => sql `SELECT id, aws_account_id, repository_name, account_profile, account_region
|
|
120
|
+
execute: (req) => sql `SELECT id, aws_account_id, repository_name, account_profile, account_region, last_modified_date, observation_seq,
|
|
121
|
+
approval_version, approval_observation_seq
|
|
116
122
|
FROM pull_requests
|
|
117
123
|
WHERE status = 'OPEN' AND fetched_at < ${req.olderThan}`
|
|
118
124
|
});
|
|
@@ -122,7 +128,8 @@ export const findOpenInRange = (sql) => {
|
|
|
122
128
|
const run = SqlSchema.findAll({
|
|
123
129
|
Result: StaleOpenRow,
|
|
124
130
|
Request: Schema.Struct({ weekStart: Schema.String, weekEnd: Schema.String }),
|
|
125
|
-
execute: (req) => sql `SELECT id, aws_account_id, repository_name, account_profile, account_region
|
|
131
|
+
execute: (req) => sql `SELECT id, aws_account_id, repository_name, account_profile, account_region, last_modified_date, observation_seq,
|
|
132
|
+
approval_version, approval_observation_seq
|
|
126
133
|
FROM pull_requests
|
|
127
134
|
WHERE status = 'OPEN'
|
|
128
135
|
AND (
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/CacheService/repos/PullRequestRepo/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,iBAAiB,IAAI,uBAAuB,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAA;AAE3G,sFAAsF;AACtF,MAAM,OAAO,yBAA0B,SAAQ,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAIzF;CAAG;AAEL,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,MAAM,CAAC,MAAM;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM;IAC3B,cAAc,EAAE,MAAM,CAAC,MAAM;IAC7B,cAAc,EAAE,cAAc;IAC9B,aAAa,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../src/CacheService/repos/PullRequestRepo/queries.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module PullRequestRepo/rowWrites
|
|
3
|
+
*
|
|
4
|
+
* The only writers of `pull_requests` rows. A row has two versioned column groups and some
|
|
5
|
+
* recomputed columns:
|
|
6
|
+
*
|
|
7
|
+
* - the row group (title, description, author, status, branches, mergeability, approvers, merge and
|
|
8
|
+
* close details), versioned by `last_modified_date`/`observation_seq`;
|
|
9
|
+
* - the approval group (`is_approved`, `approval_unknown_reason`, `approval_rules`), versioned by
|
|
10
|
+
* `approval_version`/`approval_observation_seq`;
|
|
11
|
+
* - recomputed columns (diff stats, comment count, health score, commenters), which carry no version.
|
|
12
|
+
*
|
|
13
|
+
* A version is (provider last activity, observation number), compared in that order. `observe` takes
|
|
14
|
+
* the observation from the database in one statement, before the provider call, so two reads of the
|
|
15
|
+
* same revision are ordered by when they began.
|
|
16
|
+
*
|
|
17
|
+
* Three rules close the class of "an older read overwrites a newer one":
|
|
18
|
+
*
|
|
19
|
+
* 1. A provider read writes whole groups only: `upsert` and `writeRead` take a complete `RowGroup`
|
|
20
|
+
* and `ApprovalGroup`, and each group is written unless its version is newer than the read's.
|
|
21
|
+
* 2. A recomputed write never moves a version: `writeDerived` applies only while both groups still
|
|
22
|
+
* hold exactly the versions it read, so a value computed from an older row is dropped.
|
|
23
|
+
* 3. A tombstone keeps the later of the two groups' versions, so a deletion forgets neither.
|
|
24
|
+
*
|
|
25
|
+
* Two set-based writes carry no version: filling a NULL `repo_account_id` (it never replaces a value),
|
|
26
|
+
* and deleting rows not fetched since a cutoff (cache expiry, not a provider observation).
|
|
27
|
+
* `ast-grep/rules/typescript/no-direct-pull-request-row-write.yml` keeps every other path out.
|
|
28
|
+
*
|
|
29
|
+
* @category CacheService
|
|
30
|
+
*/
|
|
31
|
+
import { Effect } from "effect";
|
|
32
|
+
import type * as SqlClient from "effect/sql/SqlClient";
|
|
33
|
+
import type * as Statement from "effect/sql/Statement";
|
|
34
|
+
import { type UpsertInput } from "./internal.js";
|
|
35
|
+
declare const ObservationSequenceMissing_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
|
|
36
|
+
readonly _tag: "ObservationSequenceMissing";
|
|
37
|
+
} & Readonly<A>;
|
|
38
|
+
/**
|
|
39
|
+
* The `observation_sequence` row is missing, so no observation number can be taken. Without one, reads
|
|
40
|
+
* of the same revision can't be ordered; callers skip the read instead.
|
|
41
|
+
*/
|
|
42
|
+
export declare class ObservationSequenceMissing extends ObservationSequenceMissing_base<{}> {
|
|
43
|
+
}
|
|
44
|
+
/** A version: the provider last activity a read saw, and the observation it came from. */
|
|
45
|
+
export interface RowVersion {
|
|
46
|
+
readonly lastActivity: Date;
|
|
47
|
+
readonly observation: number;
|
|
48
|
+
}
|
|
49
|
+
/** Both groups' versions, as a read of the row saw them. */
|
|
50
|
+
export interface RowVersions {
|
|
51
|
+
readonly row: RowVersion;
|
|
52
|
+
readonly approval: RowVersion;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The row group, complete: a provider read has every column of it. `approvedBy` null keeps the
|
|
56
|
+
* approvers already stored (they accumulate across reads).
|
|
57
|
+
*/
|
|
58
|
+
export interface RowGroup {
|
|
59
|
+
readonly title: string;
|
|
60
|
+
readonly description: string | null;
|
|
61
|
+
readonly author: string;
|
|
62
|
+
readonly status: string;
|
|
63
|
+
readonly creationDate: string;
|
|
64
|
+
readonly sourceBranch: string;
|
|
65
|
+
readonly destinationBranch: string;
|
|
66
|
+
readonly isMergeable: boolean;
|
|
67
|
+
readonly approvedBy: ReadonlyArray<string>;
|
|
68
|
+
readonly approvedByArns: ReadonlyArray<string>;
|
|
69
|
+
readonly mergedBy: string | null;
|
|
70
|
+
readonly closedAt: string | null;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The approval group, complete. While `unknownReason` is set, the stored approval and rules are kept
|
|
74
|
+
* as the last known value and only the reason is written.
|
|
75
|
+
*/
|
|
76
|
+
export interface ApprovalGroup {
|
|
77
|
+
readonly isApproved: boolean;
|
|
78
|
+
readonly approvalRules: UpsertInput["approvalRules"];
|
|
79
|
+
readonly unknownReason: string | null;
|
|
80
|
+
}
|
|
81
|
+
/** Recomputed columns: any subset, written without a version. */
|
|
82
|
+
export interface DerivedColumns {
|
|
83
|
+
readonly filesAdded?: number;
|
|
84
|
+
readonly filesModified?: number;
|
|
85
|
+
readonly filesDeleted?: number;
|
|
86
|
+
readonly commentCount?: number | null;
|
|
87
|
+
readonly healthScore?: number | null;
|
|
88
|
+
readonly commentedBy?: string | null;
|
|
89
|
+
}
|
|
90
|
+
/** Which column groups a provider read wrote, and the versions the row now holds. */
|
|
91
|
+
export interface GroupsWritten {
|
|
92
|
+
readonly row: boolean;
|
|
93
|
+
readonly approval: boolean;
|
|
94
|
+
/** The row's versions after the write; absent when the row doesn't exist (a tombstone kept it out). */
|
|
95
|
+
readonly versions: RowVersions | undefined;
|
|
96
|
+
}
|
|
97
|
+
export declare const rowWrites: (sql: SqlClient.SqlClient) => {
|
|
98
|
+
/** The next observation number, taken before a provider read. Fails when the sequence row is missing. */
|
|
99
|
+
observe: () => Effect.Effect<number, ObservationSequenceMissing | import("effect/sql/SqlError").SqlError, never>;
|
|
100
|
+
/**
|
|
101
|
+
* Insert a listed pull request, or write each of its groups unless that group is newer. A deleted
|
|
102
|
+
* pull request comes back only from a read that began after the deletion, of a revision no older
|
|
103
|
+
* than the deleted row's. Recomputed columns are set only on insert; afterwards only
|
|
104
|
+
* `writeDerived` changes them.
|
|
105
|
+
*/
|
|
106
|
+
upsert: (req: typeof UpsertInput.Encoded, row: RowGroup, approval: ApprovalGroup, observation: number) => Effect.Effect<GroupsWritten, import("effect/sql/SqlError").SqlError, never>;
|
|
107
|
+
/** Write a provider re-read of an existing row: each group unless that group is newer. */
|
|
108
|
+
writeRead: (where: Statement.Fragment, version: RowVersion, row: RowGroup, approval: ApprovalGroup) => Effect.Effect<GroupsWritten, import("effect/sql/SqlError").SqlError, never>;
|
|
109
|
+
/**
|
|
110
|
+
* Write recomputed columns, only while both groups hold exactly the versions `observed` saw: a value
|
|
111
|
+
* computed from an older row is dropped. Moves no version. True when the row was written.
|
|
112
|
+
*/
|
|
113
|
+
writeDerived: (where: Statement.Fragment, observed: RowVersions, columns: DerivedColumns) => Effect.Effect<boolean, import("effect/sql/SqlError").SqlError, never>;
|
|
114
|
+
/**
|
|
115
|
+
* Delete the row matched by `where` for a not-found read begun at `observation`, unless a read that
|
|
116
|
+
* began later has written either group since. A not-found answer carries no revision, so only its
|
|
117
|
+
* observation orders it. The tombstone keeps the later of the two groups' versions and
|
|
118
|
+
* `observation`. True when the row was deleted.
|
|
119
|
+
*/
|
|
120
|
+
deleteIfNotNewer: (where: Statement.Fragment, observation: number) => Effect.Effect<boolean, import("effect/sql/SqlError").SqlError, never>;
|
|
121
|
+
/**
|
|
122
|
+
* Cache expiry: delete rows (only OPEN ones with `openOnly`) not fetched since `olderThan`, and
|
|
123
|
+
* tombstones of deletions made before it (both on the cache clock), which no read in flight can
|
|
124
|
+
* still be behind.
|
|
125
|
+
*/
|
|
126
|
+
deleteFetchedBefore: (olderThan: string, openOnly: boolean) => Effect.Effect<readonly import("effect/sql/SqlConnection").Row[], import("effect/sql/SqlError").SqlError, never>;
|
|
127
|
+
/** Fill a NULL `repo_account_id` from another row of the same repository; an existing value is kept. */
|
|
128
|
+
fillRepoAccountIds: () => Statement.Statement<import("effect/sql/SqlConnection").Row>;
|
|
129
|
+
};
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=rowWrites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowWrites.d.ts","sourceRoot":"","sources":["../../../../src/CacheService/repos/PullRequestRepo/rowWrites.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module PullRequestRepo/rowWrites
|
|
3
|
+
*
|
|
4
|
+
* The only writers of `pull_requests` rows. A row has two versioned column groups and some
|
|
5
|
+
* recomputed columns:
|
|
6
|
+
*
|
|
7
|
+
* - the row group (title, description, author, status, branches, mergeability, approvers, merge and
|
|
8
|
+
* close details), versioned by `last_modified_date`/`observation_seq`;
|
|
9
|
+
* - the approval group (`is_approved`, `approval_unknown_reason`, `approval_rules`), versioned by
|
|
10
|
+
* `approval_version`/`approval_observation_seq`;
|
|
11
|
+
* - recomputed columns (diff stats, comment count, health score, commenters), which carry no version.
|
|
12
|
+
*
|
|
13
|
+
* A version is (provider last activity, observation number), compared in that order. `observe` takes
|
|
14
|
+
* the observation from the database in one statement, before the provider call, so two reads of the
|
|
15
|
+
* same revision are ordered by when they began.
|
|
16
|
+
*
|
|
17
|
+
* Three rules close the class of "an older read overwrites a newer one":
|
|
18
|
+
*
|
|
19
|
+
* 1. A provider read writes whole groups only: `upsert` and `writeRead` take a complete `RowGroup`
|
|
20
|
+
* and `ApprovalGroup`, and each group is written unless its version is newer than the read's.
|
|
21
|
+
* 2. A recomputed write never moves a version: `writeDerived` applies only while both groups still
|
|
22
|
+
* hold exactly the versions it read, so a value computed from an older row is dropped.
|
|
23
|
+
* 3. A tombstone keeps the later of the two groups' versions, so a deletion forgets neither.
|
|
24
|
+
*
|
|
25
|
+
* Two set-based writes carry no version: filling a NULL `repo_account_id` (it never replaces a value),
|
|
26
|
+
* and deleting rows not fetched since a cutoff (cache expiry, not a provider observation).
|
|
27
|
+
* `ast-grep/rules/typescript/no-direct-pull-request-row-write.yml` keeps every other path out.
|
|
28
|
+
*
|
|
29
|
+
* @category CacheService
|
|
30
|
+
*/
|
|
31
|
+
import { Data, Effect } from "effect";
|
|
32
|
+
import { joinApprovedBy } from "./internal.js";
|
|
33
|
+
/**
|
|
34
|
+
* The `observation_sequence` row is missing, so no observation number can be taken. Without one, reads
|
|
35
|
+
* of the same revision can't be ordered; callers skip the read instead.
|
|
36
|
+
*/
|
|
37
|
+
export class ObservationSequenceMissing extends Data.TaggedError("ObservationSequenceMissing") {
|
|
38
|
+
}
|
|
39
|
+
const written = (rows, version) => {
|
|
40
|
+
const after = rows[0];
|
|
41
|
+
if (after === undefined)
|
|
42
|
+
return { row: false, approval: false, versions: undefined };
|
|
43
|
+
const at = version.lastActivity.toISOString();
|
|
44
|
+
return {
|
|
45
|
+
row: after.rowAt === at && after.rowSeq === version.observation,
|
|
46
|
+
approval: after.approvalAt === at && after.approvalSeq === version.observation,
|
|
47
|
+
versions: {
|
|
48
|
+
row: { lastActivity: new Date(after.rowAt), observation: after.rowSeq },
|
|
49
|
+
approval: { lastActivity: new Date(after.approvalAt), observation: after.approvalSeq }
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
const rulesJson = (rules) => rules.length > 0 ? JSON.stringify(rules) : "[]";
|
|
54
|
+
export const rowWrites = (sql) => {
|
|
55
|
+
/** The group whose version is in `at`/`seq` is not newer than `version`. */
|
|
56
|
+
const notNewer = (at, seq, version) => {
|
|
57
|
+
const lastActivity = version.lastActivity.toISOString();
|
|
58
|
+
return sql `(${at} < ${lastActivity} OR (${at} = ${lastActivity} AND ${seq} <= ${version.observation}))`;
|
|
59
|
+
};
|
|
60
|
+
const rowNotNewer = (version) => notNewer(sql `pull_requests.last_modified_date`, sql `pull_requests.observation_seq`, version);
|
|
61
|
+
const approvalNotNewer = (version) => notNewer(sql `pull_requests.approval_version`, sql `pull_requests.approval_observation_seq`, version);
|
|
62
|
+
const returningVersions = sql `RETURNING last_modified_date AS rowAt, observation_seq AS rowSeq,
|
|
63
|
+
approval_version AS approvalAt, approval_observation_seq AS approvalSeq`;
|
|
64
|
+
/** Each group's assignments, guarded by that group's version. */
|
|
65
|
+
const groupAssignments = (version, row, approval) => {
|
|
66
|
+
const rowFresh = rowNotNewer(version);
|
|
67
|
+
const approvalFresh = approvalNotNewer(version);
|
|
68
|
+
const at = version.lastActivity.toISOString();
|
|
69
|
+
const keep = (column) => sql.literal(`pull_requests.${column}`);
|
|
70
|
+
const rowSet = (column, value) => sql `${sql.literal(column)} = CASE WHEN ${rowFresh} THEN ${value} ELSE ${keep(column)} END`;
|
|
71
|
+
const approvalSet = (column, value) => sql `${sql.literal(column)} = CASE WHEN ${approvalFresh} THEN ${value} ELSE ${keep(column)} END`;
|
|
72
|
+
const known = approval.unknownReason === null;
|
|
73
|
+
return sql.join(", ", false)([
|
|
74
|
+
rowSet("title", row.title),
|
|
75
|
+
rowSet("description", row.description),
|
|
76
|
+
rowSet("author", row.author),
|
|
77
|
+
rowSet("status", row.status),
|
|
78
|
+
rowSet("creation_date", row.creationDate),
|
|
79
|
+
rowSet("source_branch", row.sourceBranch),
|
|
80
|
+
rowSet("destination_branch", row.destinationBranch),
|
|
81
|
+
rowSet("is_mergeable", row.isMergeable ? 1 : 0),
|
|
82
|
+
rowSet("approved_by", sql `COALESCE(${joinApprovedBy([...row.approvedBy])}, pull_requests.approved_by)`),
|
|
83
|
+
rowSet("approved_by_arns", sql `COALESCE(${joinApprovedBy([...row.approvedByArns])}, pull_requests.approved_by_arns)`),
|
|
84
|
+
rowSet("merged_by", row.mergedBy),
|
|
85
|
+
rowSet("closed_at", row.closedAt),
|
|
86
|
+
// An unknown evaluation keeps the last known approval and rules; a successful one replaces both.
|
|
87
|
+
approvalSet("is_approved", known ? (approval.isApproved ? 1 : 0) : keep("is_approved")),
|
|
88
|
+
approvalSet("approval_rules", known ? rulesJson(approval.approvalRules) : keep("approval_rules")),
|
|
89
|
+
approvalSet("approval_unknown_reason", approval.unknownReason),
|
|
90
|
+
// SQLite evaluates every SET expression on the row as it was, so each guard sees the old versions.
|
|
91
|
+
approvalSet("approval_version", at),
|
|
92
|
+
approvalSet("approval_observation_seq", version.observation),
|
|
93
|
+
rowSet("last_modified_date", at),
|
|
94
|
+
rowSet("observation_seq", version.observation)
|
|
95
|
+
]);
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
/** The next observation number, taken before a provider read. Fails when the sequence row is missing. */
|
|
99
|
+
observe: () => sql `UPDATE observation_sequence SET value = value + 1 WHERE id = 1 RETURNING value`
|
|
100
|
+
.pipe(Effect.flatMap((rows) => {
|
|
101
|
+
const next = rows[0];
|
|
102
|
+
return next === undefined ? Effect.fail(new ObservationSequenceMissing()) : Effect.succeed(next.value);
|
|
103
|
+
})),
|
|
104
|
+
/**
|
|
105
|
+
* Insert a listed pull request, or write each of its groups unless that group is newer. A deleted
|
|
106
|
+
* pull request comes back only from a read that began after the deletion, of a revision no older
|
|
107
|
+
* than the deleted row's. Recomputed columns are set only on insert; afterwards only
|
|
108
|
+
* `writeDerived` changes them.
|
|
109
|
+
*/
|
|
110
|
+
upsert: (req, row, approval, observation) => {
|
|
111
|
+
const version = { lastActivity: new Date(req.lastModifiedDate), observation };
|
|
112
|
+
return sql `INSERT INTO pull_requests
|
|
113
|
+
(id, aws_account_id, repo_account_id, account_profile, account_region, title, description,
|
|
114
|
+
author, repository_name, creation_date, last_modified_date, status,
|
|
115
|
+
source_branch, destination_branch, is_mergeable, is_approved, approval_unknown_reason,
|
|
116
|
+
comment_count, link, approved_by, approved_by_arns, approval_rules, merged_by, closed_at, fetched_at,
|
|
117
|
+
observation_seq, approval_version, approval_observation_seq)
|
|
118
|
+
SELECT ${req.id}, ${req.awsAccountId}, ${req.repoAccountId}, ${req.accountProfile}, ${req.accountRegion},
|
|
119
|
+
${row.title}, ${row.description}, ${row.author}, ${req.repositoryName},
|
|
120
|
+
${row.creationDate}, ${req.lastModifiedDate}, ${row.status},
|
|
121
|
+
${row.sourceBranch}, ${row.destinationBranch}, ${row.isMergeable ? 1 : 0},
|
|
122
|
+
${approval.isApproved ? 1 : 0}, ${approval.unknownReason},
|
|
123
|
+
${req.commentCount}, ${req.link}, ${joinApprovedBy([...row.approvedBy])},
|
|
124
|
+
${joinApprovedBy([...row.approvedByArns])}, ${rulesJson(approval.approvalRules)},
|
|
125
|
+
${row.mergedBy}, ${row.closedAt}, strftime('%Y-%m-%dT%H:%M:%SZ', 'now'),
|
|
126
|
+
${observation}, ${req.lastModifiedDate}, ${observation}
|
|
127
|
+
WHERE NOT EXISTS (
|
|
128
|
+
SELECT 1 FROM pull_request_tombstones t
|
|
129
|
+
WHERE t.aws_account_id = ${req.awsAccountId} AND t.id = ${req.id}
|
|
130
|
+
AND t.repository_name = ${req.repositoryName} AND t.account_region = ${req.accountRegion}
|
|
131
|
+
AND (t.observation_seq >= ${observation} OR t.version > ${req.lastModifiedDate})
|
|
132
|
+
)
|
|
133
|
+
ON CONFLICT (aws_account_id, id, repository_name, account_region) DO UPDATE SET
|
|
134
|
+
account_profile = excluded.account_profile,
|
|
135
|
+
link = excluded.link,
|
|
136
|
+
repo_account_id = COALESCE(excluded.repo_account_id, pull_requests.repo_account_id),
|
|
137
|
+
fetched_at = excluded.fetched_at,
|
|
138
|
+
${groupAssignments(version, row, approval)}
|
|
139
|
+
WHERE ${rowNotNewer(version)} OR ${approvalNotNewer(version)}
|
|
140
|
+
${returningVersions}`.pipe(Effect.map((rows) => written(rows, version)));
|
|
141
|
+
},
|
|
142
|
+
/** Write a provider re-read of an existing row: each group unless that group is newer. */
|
|
143
|
+
writeRead: (where, version, row, approval) => sql `UPDATE pull_requests SET ${groupAssignments(version, row, approval)}, fetched_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
|
|
144
|
+
WHERE ${where} AND (${rowNotNewer(version)} OR ${approvalNotNewer(version)})
|
|
145
|
+
${returningVersions}`.pipe(Effect.map((rows) => written(rows, version))),
|
|
146
|
+
/**
|
|
147
|
+
* Write recomputed columns, only while both groups hold exactly the versions `observed` saw: a value
|
|
148
|
+
* computed from an older row is dropped. Moves no version. True when the row was written.
|
|
149
|
+
*/
|
|
150
|
+
writeDerived: (where, observed, columns) => {
|
|
151
|
+
const assignments = [
|
|
152
|
+
columns.filesAdded !== undefined ? sql `files_added = ${columns.filesAdded}` : undefined,
|
|
153
|
+
columns.filesModified !== undefined ? sql `files_modified = ${columns.filesModified}` : undefined,
|
|
154
|
+
columns.filesDeleted !== undefined ? sql `files_deleted = ${columns.filesDeleted}` : undefined,
|
|
155
|
+
columns.commentCount !== undefined ? sql `comment_count = ${columns.commentCount}` : undefined,
|
|
156
|
+
columns.healthScore !== undefined ? sql `health_score = ${columns.healthScore}` : undefined,
|
|
157
|
+
columns.commentedBy !== undefined ? sql `commented_by = ${columns.commentedBy}` : undefined
|
|
158
|
+
].filter((assignment) => assignment !== undefined);
|
|
159
|
+
if (assignments.length === 0)
|
|
160
|
+
return Effect.succeed(false);
|
|
161
|
+
return sql `UPDATE pull_requests SET ${sql.join(", ", false)(assignments)}
|
|
162
|
+
WHERE ${where}
|
|
163
|
+
AND last_modified_date = ${observed.row.lastActivity.toISOString()}
|
|
164
|
+
AND observation_seq = ${observed.row.observation}
|
|
165
|
+
AND approval_version = ${observed.approval.lastActivity.toISOString()}
|
|
166
|
+
AND approval_observation_seq = ${observed.approval.observation}
|
|
167
|
+
RETURNING 1 AS applied`.pipe(Effect.map((rows) => rows.length > 0));
|
|
168
|
+
},
|
|
169
|
+
/**
|
|
170
|
+
* Delete the row matched by `where` for a not-found read begun at `observation`, unless a read that
|
|
171
|
+
* began later has written either group since. A not-found answer carries no revision, so only its
|
|
172
|
+
* observation orders it. The tombstone keeps the later of the two groups' versions and
|
|
173
|
+
* `observation`. True when the row was deleted.
|
|
174
|
+
*/
|
|
175
|
+
deleteIfNotNewer: (where, observation) => {
|
|
176
|
+
const unwritten = sql `observation_seq <= ${observation} AND approval_observation_seq <= ${observation}`;
|
|
177
|
+
return sql.withTransaction(sql `INSERT INTO pull_request_tombstones
|
|
178
|
+
(aws_account_id, id, repository_name, account_region, version, observation_seq)
|
|
179
|
+
SELECT aws_account_id, id, repository_name, account_region,
|
|
180
|
+
MAX(last_modified_date, approval_version), ${observation}
|
|
181
|
+
FROM pull_requests WHERE ${where} AND ${unwritten}
|
|
182
|
+
ON CONFLICT (aws_account_id, id, repository_name, account_region) DO UPDATE SET
|
|
183
|
+
version = excluded.version, observation_seq = excluded.observation_seq,
|
|
184
|
+
deleted_at = excluded.deleted_at`.pipe(Effect.andThen(sql `DELETE FROM pull_requests WHERE ${where} AND ${unwritten}
|
|
185
|
+
RETURNING 1 AS applied`),
|
|
186
|
+
// A row already gone: a later not-found read still advances its tombstone (never lowers it),
|
|
187
|
+
// so a read that began between the two deletions can't bring it back.
|
|
188
|
+
Effect.tap(() => sql `UPDATE pull_request_tombstones
|
|
189
|
+
SET observation_seq = ${observation}, deleted_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now')
|
|
190
|
+
WHERE ${where} AND observation_seq < ${observation}
|
|
191
|
+
AND NOT EXISTS (SELECT 1 FROM pull_requests WHERE ${where})`), Effect.map((rows) => rows.length > 0)));
|
|
192
|
+
},
|
|
193
|
+
/**
|
|
194
|
+
* Cache expiry: delete rows (only OPEN ones with `openOnly`) not fetched since `olderThan`, and
|
|
195
|
+
* tombstones of deletions made before it (both on the cache clock), which no read in flight can
|
|
196
|
+
* still be behind.
|
|
197
|
+
*/
|
|
198
|
+
deleteFetchedBefore: (olderThan, openOnly) => (openOnly
|
|
199
|
+
? sql `DELETE FROM pull_requests WHERE status = 'OPEN' AND fetched_at < ${olderThan}`
|
|
200
|
+
: sql `DELETE FROM pull_requests WHERE fetched_at < ${olderThan}`).pipe(Effect.andThen(sql `DELETE FROM pull_request_tombstones WHERE deleted_at < ${olderThan}`)),
|
|
201
|
+
/** Fill a NULL `repo_account_id` from another row of the same repository; an existing value is kept. */
|
|
202
|
+
fillRepoAccountIds: () => sql `UPDATE pull_requests
|
|
203
|
+
SET repo_account_id = (
|
|
204
|
+
SELECT p2.repo_account_id FROM pull_requests p2
|
|
205
|
+
WHERE p2.repo_account_id IS NOT NULL
|
|
206
|
+
AND p2.aws_account_id = pull_requests.aws_account_id
|
|
207
|
+
AND p2.repository_name = pull_requests.repository_name
|
|
208
|
+
AND p2.account_region = pull_requests.account_region
|
|
209
|
+
LIMIT 1
|
|
210
|
+
)
|
|
211
|
+
WHERE repo_account_id IS NULL`
|
|
212
|
+
};
|
|
213
|
+
};
|
|
214
|
+
//# sourceMappingURL=rowWrites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowWrites.js","sourceRoot":"","sources":["../../../../src/CacheService/repos/PullRequestRepo/rowWrites.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,7 +81,6 @@ export interface PRForReviewRow {
|
|
|
81
81
|
readonly creationDate: string;
|
|
82
82
|
readonly closedAt: string | null;
|
|
83
83
|
readonly lastModifiedDate: string;
|
|
84
|
-
readonly isApproved: number;
|
|
85
84
|
readonly mergedBy: string | null;
|
|
86
85
|
readonly repositoryName: string;
|
|
87
86
|
readonly status: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../src/CacheService/repos/StatsRepo/internal.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../src/CacheService/repos/StatsRepo/internal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../../src/CacheService/repos/StatsRepo/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGhD,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../../src/CacheService/repos/StatsRepo/internal.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../src/CacheService/repos/StatsRepo/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACL,KAAK,WAAW,EAGhB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAGzB,KAAK,OAAO,EACZ,KAAK,SAAS,EAEd,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,SAAS,EAEf,MAAM,eAAe,CAAA;AAItB,eAAO,MAAM,YAAY,QAAS,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,8EAc9G,CAAA;AAED,eAAO,MAAM,eAAe,QACpB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,8GAYlF,CAAA;AAEH,eAAO,MAAM,aAAa,QAClB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,2GAYlF,CAAA;AAEH,eAAO,MAAM,kBAAkB,QACvB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,wFAiBlF,CAAA;AAEH,eAAO,MAAM,WAAW,QAAS,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO;;;;0DAoB7G,CAAA;AAED,eAAO,MAAM,qBAAqB,QAC1B,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,oHAgBlF,CAAA;AAEH,eAAO,MAAM,QAAQ,QAAS,SAAS,CAAC,SAAS,cAAc,MAAM,WAAW,OAAO,0GAatF,CAAA;AAED,eAAO,MAAM,gBAAgB,QACrB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../src/CacheService/repos/StatsRepo/queries.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,KAAK,KAAK,SAAS,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACL,KAAK,WAAW,EAGhB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAGzB,KAAK,OAAO,EACZ,KAAK,SAAS,EAEd,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,SAAS,EAEf,MAAM,eAAe,CAAA;AAItB,eAAO,MAAM,YAAY,QAAS,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,8EAc9G,CAAA;AAED,eAAO,MAAM,eAAe,QACpB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,8GAYlF,CAAA;AAEH,eAAO,MAAM,aAAa,QAClB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,2GAYlF,CAAA;AAEH,eAAO,MAAM,kBAAkB,QACvB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,wFAiBlF,CAAA;AAEH,eAAO,MAAM,WAAW,QAAS,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO;;;;0DAoB7G,CAAA;AAED,eAAO,MAAM,qBAAqB,QAC1B,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,oHAgBlF,CAAA;AAEH,eAAO,MAAM,QAAQ,QAAS,SAAS,CAAC,SAAS,cAAc,MAAM,WAAW,OAAO,0GAatF,CAAA;AAED,eAAO,MAAM,gBAAgB,QACrB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,8EAgBlF,CAAA;AAEH,eAAO,MAAM,aAAa,QAAS,SAAS,CAAC,SAAS;;;;mDAkBnD,CAAA;AAEH,eAAO,MAAM,aAAa,QAAS,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,2EAY/G,CAAA;AAED,eAAO,MAAM,gBAAgB,QACrB,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO;;;;;;;;;;qDA2BlF,CAAA;AAEH,eAAO,MAAM,cAAc,QAAS,SAAS,CAAC,SAAS,iBAAiB,MAAM,WAAW,MAAM,WAAW,OAAO,kFAchH,CAAA;AAED,eAAO,MAAM,kBAAkB,QAAS,SAAS,CAAC,SAAS,wFAMxD,CAAA"}
|
|
@@ -118,7 +118,8 @@ export const healthIndicators = (sql) => (weekStart, weekEnd, filters) => {
|
|
|
118
118
|
SELECT
|
|
119
119
|
COUNT(*) as total,
|
|
120
120
|
COUNT(CASE WHEN comment_count > 0 THEN 1 END) as with_comments,
|
|
121
|
-
|
|
121
|
+
-- A row whose last evaluation failed has only a last known approval, so it is not counted.
|
|
122
|
+
COUNT(CASE WHEN is_approved = 1 AND approval_unknown_reason IS NULL THEN 1 END) as approved
|
|
122
123
|
FROM pull_requests
|
|
123
124
|
WHERE creation_date >= ${weekStart} AND creation_date < ${weekEnd}
|
|
124
125
|
AND status != 'CLOSED'
|