pipework 0.212.0 → 0.243.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/CHANGELOG.md +140 -0
- package/REFERENCE.md +94 -2
- package/dist/REFERENCE.md +472 -16
- package/dist/cli/commands/openapi.d.ts +8 -0
- package/dist/cli/commands/openapi.d.ts.map +1 -0
- package/dist/cli/commands/openapi.js +49 -0
- package/dist/cli/commands/openapi.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +8 -0
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +22 -3
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/dev-bootstrap.js +6 -1
- package/dist/cli/dev-bootstrap.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +15 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/surface-kinds.d.ts +5 -0
- package/dist/cli/surface-kinds.d.ts.map +1 -0
- package/dist/cli/surface-kinds.js +15 -0
- package/dist/cli/surface-kinds.js.map +1 -0
- package/dist/core/config/load.d.ts +1 -0
- package/dist/core/config/load.d.ts.map +1 -1
- package/dist/core/config/load.js +1 -0
- package/dist/core/config/load.js.map +1 -1
- package/dist/core/config/namespace.d.ts +6 -0
- package/dist/core/config/namespace.d.ts.map +1 -1
- package/dist/core/config/schema.d.ts +15 -0
- package/dist/core/config/schema.d.ts.map +1 -1
- package/dist/core/config/schema.js +11 -2
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/lifecycle/health.js +2 -2
- package/dist/core/lifecycle/health.js.map +1 -1
- package/dist/core/lifecycle/types.d.ts +2 -0
- package/dist/core/lifecycle/types.d.ts.map +1 -1
- package/dist/core/pipework.d.ts +14 -1
- package/dist/core/pipework.d.ts.map +1 -1
- package/dist/core/pipework.js +18 -2
- package/dist/core/pipework.js.map +1 -1
- package/dist/core/surface/http.d.ts +3 -0
- package/dist/core/surface/http.d.ts.map +1 -1
- package/dist/core/surface/http.js +27 -8
- package/dist/core/surface/http.js.map +1 -1
- package/dist/core/surface/start.d.ts.map +1 -1
- package/dist/core/surface/start.js +19 -3
- package/dist/core/surface/start.js.map +1 -1
- package/dist/core/surface/types.d.ts +8 -0
- package/dist/core/surface/types.d.ts.map +1 -1
- package/dist/data/db/filter.d.ts +3 -0
- package/dist/data/db/filter.d.ts.map +1 -1
- package/dist/data/db/filter.js +3 -0
- package/dist/data/db/filter.js.map +1 -1
- package/dist/data/db/in-list.d.ts +15 -0
- package/dist/data/db/in-list.d.ts.map +1 -0
- package/dist/data/db/in-list.js +51 -0
- package/dist/data/db/in-list.js.map +1 -0
- package/dist/data/db/namespace.d.ts +2 -0
- package/dist/data/db/namespace.d.ts.map +1 -1
- package/dist/data/db/pool.d.ts +1 -1
- package/dist/data/db/pool.d.ts.map +1 -1
- package/dist/data/db/pool.js +4 -2
- package/dist/data/db/pool.js.map +1 -1
- package/dist/data/db/reservation.d.ts +40 -0
- package/dist/data/db/reservation.d.ts.map +1 -0
- package/dist/data/db/reservation.js +108 -0
- package/dist/data/db/reservation.js.map +1 -0
- package/dist/data/domain/build-table.js +32 -1
- package/dist/data/domain/build-table.js.map +1 -1
- package/dist/data/domain/index.d.ts +2 -1
- package/dist/data/domain/index.d.ts.map +1 -1
- package/dist/data/domain/types.d.ts +9 -1
- package/dist/data/domain/types.d.ts.map +1 -1
- package/dist/data/domain/types.js.map +1 -1
- package/dist/data/migrate/apply.d.ts +14 -0
- package/dist/data/migrate/apply.d.ts.map +1 -1
- package/dist/data/migrate/apply.js +13 -13
- package/dist/data/migrate/apply.js.map +1 -1
- package/dist/data/migrate/check.d.ts.map +1 -1
- package/dist/data/migrate/check.js +3 -6
- package/dist/data/migrate/check.js.map +1 -1
- package/dist/data/migrate/diff.d.ts +16 -0
- package/dist/data/migrate/diff.d.ts.map +1 -1
- package/dist/data/migrate/diff.js +44 -4
- package/dist/data/migrate/diff.js.map +1 -1
- package/dist/data/migrate/generate.d.ts +1 -1
- package/dist/data/migrate/generate.d.ts.map +1 -1
- package/dist/data/migrate/generate.js +19 -51
- package/dist/data/migrate/generate.js.map +1 -1
- package/dist/data/migrate/history.d.ts +36 -0
- package/dist/data/migrate/history.d.ts.map +1 -0
- package/dist/data/migrate/history.js +185 -0
- package/dist/data/migrate/history.js.map +1 -0
- package/dist/data/migrate/internal-definitions.d.ts.map +1 -1
- package/dist/data/migrate/internal-definitions.js +22 -1
- package/dist/data/migrate/internal-definitions.js.map +1 -1
- package/dist/data/migrate/provision-framework.d.ts +2 -0
- package/dist/data/migrate/provision-framework.d.ts.map +1 -1
- package/dist/data/migrate/provision-framework.js +17 -5
- package/dist/data/migrate/provision-framework.js.map +1 -1
- package/dist/data/migrate/snapshot.d.ts +4 -0
- package/dist/data/migrate/snapshot.d.ts.map +1 -1
- package/dist/data/migrate/snapshot.js +2 -0
- package/dist/data/migrate/snapshot.js.map +1 -1
- package/dist/data/migrate/sql-emit.js +66 -12
- package/dist/data/migrate/sql-emit.js.map +1 -1
- package/dist/data/query/pg-core/foreign-keys.d.ts +5 -0
- package/dist/data/query/pg-core/foreign-keys.d.ts.map +1 -1
- package/dist/data/query/pg-core/foreign-keys.js +9 -0
- package/dist/data/query/pg-core/foreign-keys.js.map +1 -1
- package/dist/data/query/pg-core/indexes.d.ts +5 -0
- package/dist/data/query/pg-core/indexes.d.ts.map +1 -1
- package/dist/data/query/pg-core/indexes.js +7 -0
- package/dist/data/query/pg-core/indexes.js.map +1 -1
- package/dist/data/schema/json-schema.js +29 -1
- package/dist/data/schema/json-schema.js.map +1 -1
- package/dist/data/schema/types.d.ts +2 -2
- package/dist/data/schema/types.d.ts.map +1 -1
- package/dist/index.d.ts +18 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/infra/alerts/handle.d.ts +33 -5
- package/dist/infra/alerts/handle.d.ts.map +1 -1
- package/dist/infra/alerts/handle.js +56 -12
- package/dist/infra/alerts/handle.js.map +1 -1
- package/dist/infra/alerts/http.d.ts +2 -2
- package/dist/infra/alerts/http.d.ts.map +1 -1
- package/dist/infra/alerts/http.js +21 -3
- package/dist/infra/alerts/http.js.map +1 -1
- package/dist/infra/alerts/index.d.ts +1 -1
- package/dist/infra/alerts/index.d.ts.map +1 -1
- package/dist/infra/alerts/schema.d.ts +5 -0
- package/dist/infra/alerts/schema.d.ts.map +1 -1
- package/dist/infra/alerts/schema.js +1 -0
- package/dist/infra/alerts/schema.js.map +1 -1
- package/dist/infra/crawl/audit.d.ts +6 -0
- package/dist/infra/crawl/audit.d.ts.map +1 -0
- package/dist/infra/crawl/audit.js +38 -0
- package/dist/infra/crawl/audit.js.map +1 -0
- package/dist/infra/crawl/errors.d.ts +14 -0
- package/dist/infra/crawl/errors.d.ts.map +1 -0
- package/dist/infra/crawl/errors.js +22 -0
- package/dist/infra/crawl/errors.js.map +1 -0
- package/dist/infra/crawl/handle.d.ts +149 -0
- package/dist/infra/crawl/handle.d.ts.map +1 -0
- package/dist/infra/crawl/handle.js +550 -0
- package/dist/infra/crawl/handle.js.map +1 -0
- package/dist/infra/crawl/index.d.ts +7 -0
- package/dist/infra/crawl/index.d.ts.map +1 -0
- package/dist/infra/crawl/index.js +5 -0
- package/dist/infra/crawl/index.js.map +1 -0
- package/dist/infra/crawl/links.d.ts +9 -0
- package/dist/infra/crawl/links.d.ts.map +1 -0
- package/dist/infra/crawl/links.js +194 -0
- package/dist/infra/crawl/links.js.map +1 -0
- package/dist/infra/crawl/namespace.d.ts +36 -0
- package/dist/infra/crawl/namespace.d.ts.map +1 -0
- package/dist/infra/crawl/namespace.js +36 -0
- package/dist/infra/crawl/namespace.js.map +1 -0
- package/dist/infra/crawl/robots.d.ts +16 -0
- package/dist/infra/crawl/robots.d.ts.map +1 -0
- package/dist/infra/crawl/robots.js +98 -0
- package/dist/infra/crawl/robots.js.map +1 -0
- package/dist/infra/crawl/schema.d.ts +222 -0
- package/dist/infra/crawl/schema.d.ts.map +1 -0
- package/dist/infra/crawl/schema.js +84 -0
- package/dist/infra/crawl/schema.js.map +1 -0
- package/dist/infra/credit-line/handle.d.ts +250 -0
- package/dist/infra/credit-line/handle.d.ts.map +1 -0
- package/dist/infra/credit-line/handle.js +618 -0
- package/dist/infra/credit-line/handle.js.map +1 -0
- package/dist/infra/credit-line/index.d.ts +3 -0
- package/dist/infra/credit-line/index.d.ts.map +1 -0
- package/dist/infra/credit-line/index.js +2 -0
- package/dist/infra/credit-line/index.js.map +1 -0
- package/dist/infra/credit-line/namespace.d.ts +7 -0
- package/dist/infra/credit-line/namespace.d.ts.map +1 -0
- package/dist/infra/credit-line/namespace.js +7 -0
- package/dist/infra/credit-line/namespace.js.map +1 -0
- package/dist/infra/credit-line/schema.d.ts +194 -0
- package/dist/infra/credit-line/schema.d.ts.map +1 -0
- package/dist/infra/credit-line/schema.js +89 -0
- package/dist/infra/credit-line/schema.js.map +1 -0
- package/dist/infra/email/inbound.d.ts +14 -2
- package/dist/infra/email/inbound.d.ts.map +1 -1
- package/dist/infra/email/inbound.js +5 -1
- package/dist/infra/email/inbound.js.map +1 -1
- package/dist/infra/email/index.d.ts +2 -2
- package/dist/infra/email/index.d.ts.map +1 -1
- package/dist/infra/email/index.js.map +1 -1
- package/dist/infra/email/mail.d.ts +43 -5
- package/dist/infra/email/mail.d.ts.map +1 -1
- package/dist/infra/email/mail.js +124 -9
- package/dist/infra/email/mail.js.map +1 -1
- package/dist/infra/email/mime.d.ts +6 -0
- package/dist/infra/email/mime.d.ts.map +1 -1
- package/dist/infra/email/mime.js +10 -2
- package/dist/infra/email/mime.js.map +1 -1
- package/dist/infra/email/schema.d.ts +17 -3
- package/dist/infra/email/schema.d.ts.map +1 -1
- package/dist/infra/email/schema.js +15 -4
- package/dist/infra/email/schema.js.map +1 -1
- package/dist/infra/email/sns.js +2 -2
- package/dist/infra/email/sns.js.map +1 -1
- package/dist/infra/email/unsubscribe.d.ts +13 -0
- package/dist/infra/email/unsubscribe.d.ts.map +1 -0
- package/dist/infra/email/unsubscribe.js +43 -0
- package/dist/infra/email/unsubscribe.js.map +1 -0
- package/dist/infra/fetch/handle.d.ts +20 -1
- package/dist/infra/fetch/handle.d.ts.map +1 -1
- package/dist/infra/fetch/handle.js +60 -28
- package/dist/infra/fetch/handle.js.map +1 -1
- package/dist/infra/fetch/index.d.ts +2 -2
- package/dist/infra/fetch/index.d.ts.map +1 -1
- package/dist/infra/fetch/index.js +1 -1
- package/dist/infra/fetch/index.js.map +1 -1
- package/dist/infra/fetch/namespace.d.ts +20 -2
- package/dist/infra/fetch/namespace.d.ts.map +1 -1
- package/dist/infra/fetch/namespace.js +20 -2
- package/dist/infra/fetch/namespace.js.map +1 -1
- package/dist/infra/join-requests/handle.d.ts +86 -0
- package/dist/infra/join-requests/handle.d.ts.map +1 -0
- package/dist/infra/join-requests/handle.js +233 -0
- package/dist/infra/join-requests/handle.js.map +1 -0
- package/dist/infra/join-requests/index.d.ts +3 -0
- package/dist/infra/join-requests/index.d.ts.map +1 -0
- package/dist/infra/join-requests/index.js +2 -0
- package/dist/infra/join-requests/index.js.map +1 -0
- package/dist/infra/join-requests/namespace.d.ts +7 -0
- package/dist/infra/join-requests/namespace.d.ts.map +1 -0
- package/dist/infra/join-requests/namespace.js +7 -0
- package/dist/infra/join-requests/namespace.js.map +1 -0
- package/dist/infra/join-requests/schema.d.ts +58 -0
- package/dist/infra/join-requests/schema.d.ts.map +1 -0
- package/dist/infra/join-requests/schema.js +31 -0
- package/dist/infra/join-requests/schema.js.map +1 -0
- package/dist/infra/outbox/core.d.ts +9 -0
- package/dist/infra/outbox/core.d.ts.map +1 -1
- package/dist/infra/outbox/core.js +14 -0
- package/dist/infra/outbox/core.js.map +1 -1
- package/dist/infra/support/handle.d.ts +43 -0
- package/dist/infra/support/handle.d.ts.map +1 -1
- package/dist/infra/support/handle.js +35 -7
- package/dist/infra/support/handle.js.map +1 -1
- package/dist/infra/support/http.d.ts +28 -0
- package/dist/infra/support/http.d.ts.map +1 -0
- package/dist/infra/support/http.js +217 -0
- package/dist/infra/support/http.js.map +1 -0
- package/dist/infra/support/index.d.ts +2 -0
- package/dist/infra/support/index.d.ts.map +1 -1
- package/dist/infra/support/index.js +1 -0
- package/dist/infra/support/index.js.map +1 -1
- package/dist/infra/support/namespace.d.ts +3 -0
- package/dist/infra/support/namespace.d.ts.map +1 -1
- package/dist/infra/support/namespace.js +3 -0
- package/dist/infra/support/namespace.js.map +1 -1
- package/dist/infra/support/schema.d.ts +4 -4
- package/dist/infra/webhook/outbound.d.ts +16 -0
- package/dist/infra/webhook/outbound.d.ts.map +1 -1
- package/dist/infra/webhook/outbound.js +78 -27
- package/dist/infra/webhook/outbound.js.map +1 -1
- package/dist/request/di/builder.d.ts +24 -1
- package/dist/request/di/builder.d.ts.map +1 -1
- package/dist/request/di/builder.js +35 -0
- package/dist/request/di/builder.js.map +1 -1
- package/dist/request/di/types.d.ts +30 -0
- package/dist/request/di/types.d.ts.map +1 -1
- package/dist/request/http/server.d.ts.map +1 -1
- package/dist/request/http/server.js +111 -20
- package/dist/request/http/server.js.map +1 -1
- package/dist/test/auto-setup.js +2 -2
- package/dist/test/auto-setup.js.map +1 -1
- package/dist/test/crawl-fixture.d.ts +53 -0
- package/dist/test/crawl-fixture.d.ts.map +1 -0
- package/dist/test/crawl-fixture.js +130 -0
- package/dist/test/crawl-fixture.js.map +1 -0
- package/dist/test/index.d.ts +2 -1
- package/dist/test/index.d.ts.map +1 -1
- package/dist/test/index.js +2 -1
- package/dist/test/index.js.map +1 -1
- package/dist/test/progress.d.ts +7 -1
- package/dist/test/progress.d.ts.map +1 -1
- package/dist/test/progress.js +6 -0
- package/dist/test/progress.js.map +1 -1
- package/dist/test/reap-after-run.d.ts +3 -0
- package/dist/test/reap-after-run.d.ts.map +1 -0
- package/dist/test/reap-after-run.js +29 -0
- package/dist/test/reap-after-run.js.map +1 -0
- package/dist/test/reap.d.ts +11 -2
- package/dist/test/reap.d.ts.map +1 -1
- package/dist/test/reap.js +19 -12
- package/dist/test/reap.js.map +1 -1
- package/dist/test/setup.d.ts +2 -0
- package/dist/test/setup.d.ts.map +1 -1
- package/dist/test/setup.js +97 -31
- package/dist/test/setup.js.map +1 -1
- package/dist/test/vitest-plugin.d.ts.map +1 -1
- package/dist/test/vitest-plugin.js +8 -1
- package/dist/test/vitest-plugin.js.map +1 -1
- package/dist/test/vitest-workspace.d.ts +1 -0
- package/dist/test/vitest-workspace.d.ts.map +1 -1
- package/dist/test/vitest-workspace.js +1 -1
- package/dist/test/vitest-workspace.js.map +1 -1
- package/dist/test/vitest.d.ts +20 -0
- package/dist/test/vitest.d.ts.map +1 -1
- package/dist/test/vitest.js +41 -1
- package/dist/test/vitest.js.map +1 -1
- package/dist/trace/partition/sync.d.ts +8 -2
- package/dist/trace/partition/sync.d.ts.map +1 -1
- package/dist/trace/partition/sync.js +6 -3
- package/dist/trace/partition/sync.js.map +1 -1
- package/dist/workspace/generate.d.ts.map +1 -1
- package/dist/workspace/generate.js +1 -0
- package/dist/workspace/generate.js.map +1 -1
- package/package.json +1 -1
- package/dist/infra/email/sigv4.d.ts +0 -24
- package/dist/infra/email/sigv4.d.ts.map +0 -1
- package/dist/infra/email/sigv4.js +0 -55
- package/dist/infra/email/sigv4.js.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { EMPTY_SNAPSHOT } from './snapshot.js';
|
|
4
|
+
const LEGACY_TAG = /^\d{4}(_|$)/;
|
|
5
|
+
const TIMESTAMP_TAG = /^\d{14}(_|$)/;
|
|
6
|
+
const MAP_KEYS = ['columns', 'indexes', 'foreignKeys', 'checks', 'uniqueConstraints', 'compositePrimaryKeys'];
|
|
7
|
+
function readLegacyJournal(folder) {
|
|
8
|
+
const path = join(folder, 'meta', '_journal.json');
|
|
9
|
+
if (!existsSync(path))
|
|
10
|
+
return null;
|
|
11
|
+
const journal = JSON.parse(readFileSync(path, 'utf-8'));
|
|
12
|
+
return journal.entries ?? [];
|
|
13
|
+
}
|
|
14
|
+
/** The folder's migrations in apply order: legacy `NNNN` tags by index, then timestamp tags by time. */
|
|
15
|
+
export function listMigrations(folder) {
|
|
16
|
+
if (!existsSync(folder))
|
|
17
|
+
return [];
|
|
18
|
+
const tags = readdirSync(folder, { withFileTypes: true })
|
|
19
|
+
.filter(e => e.isFile() && e.name.endsWith('.sql'))
|
|
20
|
+
.map(e => e.name.slice(0, -'.sql'.length));
|
|
21
|
+
const legacy = [];
|
|
22
|
+
const stamped = [];
|
|
23
|
+
for (const tag of tags) {
|
|
24
|
+
if (TIMESTAMP_TAG.test(tag))
|
|
25
|
+
stamped.push(tag);
|
|
26
|
+
else if (LEGACY_TAG.test(tag))
|
|
27
|
+
legacy.push(tag);
|
|
28
|
+
else {
|
|
29
|
+
throw new Error(`Migration file "${tag}.sql" in ${folder} is not named like a migration. ` +
|
|
30
|
+
`Expected "NNNN_name.sql" (legacy index) or "YYYYMMDDHHMMSS_name.sql" (UTC timestamp).`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const byText = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
|
|
34
|
+
legacy.sort((a, b) => Number(a.slice(0, 4)) - Number(b.slice(0, 4)) || byText(a, b));
|
|
35
|
+
stamped.sort((a, b) => byText(a.slice(0, 14), b.slice(0, 14)) || byText(a, b));
|
|
36
|
+
const journal = readLegacyJournal(folder);
|
|
37
|
+
if (journal !== null) {
|
|
38
|
+
for (const entry of journal) {
|
|
39
|
+
const path = `${folder}/${entry.tag}.sql`;
|
|
40
|
+
if (!existsSync(path))
|
|
41
|
+
throw new Error(`Missing migration file: ${path}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const journalWhen = new Map((journal ?? []).map(e => [e.tag, e.when]));
|
|
45
|
+
return [
|
|
46
|
+
...legacy.map(tag => ({ tag, when: journalWhen.get(tag) ?? Number(tag.slice(0, 4)) })),
|
|
47
|
+
...stamped.map(tag => ({ tag, when: timestampMillis(tag) })),
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
export function timestampMillis(tag) {
|
|
51
|
+
const p = (from, to) => Number(tag.slice(from, to));
|
|
52
|
+
return Date.UTC(p(0, 4), p(4, 6) - 1, p(6, 8), p(8, 10), p(10, 12), p(12, 14));
|
|
53
|
+
}
|
|
54
|
+
export function isTimestampTag(tag) {
|
|
55
|
+
return TIMESTAMP_TAG.test(tag);
|
|
56
|
+
}
|
|
57
|
+
export function deltaPath(folder, tag) {
|
|
58
|
+
return join(folder, 'meta', `${tag}.delta.json`);
|
|
59
|
+
}
|
|
60
|
+
function stable(value) {
|
|
61
|
+
return JSON.stringify(value, (_key, v) => {
|
|
62
|
+
if (v !== null && typeof v === 'object' && !Array.isArray(v)) {
|
|
63
|
+
return Object.fromEntries(Object.entries(v).sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0)));
|
|
64
|
+
}
|
|
65
|
+
return v;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
function same(a, b) {
|
|
69
|
+
return stable(a) === stable(b);
|
|
70
|
+
}
|
|
71
|
+
function diffMap(prev, next) {
|
|
72
|
+
const out = {};
|
|
73
|
+
for (const [key, value] of Object.entries(next)) {
|
|
74
|
+
if (!(key in prev) || !same(prev[key], value))
|
|
75
|
+
out[key] = value;
|
|
76
|
+
}
|
|
77
|
+
for (const key of Object.keys(prev)) {
|
|
78
|
+
if (!(key in next))
|
|
79
|
+
out[key] = null;
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
/** The element-level change from one snapshot to the next; only changed tables, elements and doors appear. */
|
|
84
|
+
export function snapshotDelta(prev, next) {
|
|
85
|
+
const tables = {};
|
|
86
|
+
for (const [key, table] of Object.entries(next.tables)) {
|
|
87
|
+
const before = prev.tables[key];
|
|
88
|
+
const empty = before === undefined;
|
|
89
|
+
const delta = {
|
|
90
|
+
name: table.name,
|
|
91
|
+
schema: table.schema,
|
|
92
|
+
partitionBy: table.partitionBy ?? null,
|
|
93
|
+
columns: diffMap(before?.columns ?? {}, table.columns),
|
|
94
|
+
indexes: diffMap(before?.indexes ?? {}, table.indexes),
|
|
95
|
+
foreignKeys: diffMap(before?.foreignKeys ?? {}, table.foreignKeys),
|
|
96
|
+
checks: diffMap(before?.checks ?? {}, table.checks),
|
|
97
|
+
uniqueConstraints: diffMap(before?.uniqueConstraints ?? {}, table.uniqueConstraints),
|
|
98
|
+
compositePrimaryKeys: diffMap(before?.compositePrimaryKeys ?? {}, table.compositePrimaryKeys),
|
|
99
|
+
};
|
|
100
|
+
const changed = empty
|
|
101
|
+
|| before.name !== table.name
|
|
102
|
+
|| before.schema !== table.schema
|
|
103
|
+
|| !same(before.partitionBy ?? null, delta.partitionBy)
|
|
104
|
+
|| MAP_KEYS.some(k => Object.keys(delta[k]).length > 0);
|
|
105
|
+
if (changed)
|
|
106
|
+
tables[key] = delta;
|
|
107
|
+
}
|
|
108
|
+
for (const key of Object.keys(prev.tables)) {
|
|
109
|
+
if (!(key in next.tables))
|
|
110
|
+
tables[key] = null;
|
|
111
|
+
}
|
|
112
|
+
const delta = { version: 'pw1-delta', tables };
|
|
113
|
+
if (next.doors !== undefined || prev.doors !== undefined) {
|
|
114
|
+
const doors = diffMap(prev.doors ?? {}, next.doors ?? {});
|
|
115
|
+
if (Object.keys(doors).length > 0)
|
|
116
|
+
delta.doors = doors;
|
|
117
|
+
}
|
|
118
|
+
return delta;
|
|
119
|
+
}
|
|
120
|
+
function applyMap(base, changes) {
|
|
121
|
+
const out = { ...base };
|
|
122
|
+
for (const [key, value] of Object.entries(changes)) {
|
|
123
|
+
if (value === null)
|
|
124
|
+
delete out[key];
|
|
125
|
+
else
|
|
126
|
+
out[key] = value;
|
|
127
|
+
}
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
/** `snap` with `delta` applied. Pure: the input is not modified. */
|
|
131
|
+
export function applyDelta(snap, delta) {
|
|
132
|
+
const tables = { ...snap.tables };
|
|
133
|
+
for (const [key, change] of Object.entries(delta.tables)) {
|
|
134
|
+
if (change === null) {
|
|
135
|
+
delete tables[key];
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const base = tables[key];
|
|
139
|
+
tables[key] = {
|
|
140
|
+
name: change.name,
|
|
141
|
+
schema: change.schema,
|
|
142
|
+
columns: applyMap(base?.columns ?? {}, change.columns),
|
|
143
|
+
indexes: applyMap(base?.indexes ?? {}, change.indexes),
|
|
144
|
+
foreignKeys: applyMap(base?.foreignKeys ?? {}, change.foreignKeys),
|
|
145
|
+
checks: applyMap(base?.checks ?? {}, change.checks),
|
|
146
|
+
uniqueConstraints: applyMap(base?.uniqueConstraints ?? {}, change.uniqueConstraints),
|
|
147
|
+
compositePrimaryKeys: applyMap(base?.compositePrimaryKeys ?? {}, change.compositePrimaryKeys),
|
|
148
|
+
partitionBy: change.partitionBy ?? undefined,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const result = { ...snap, tables };
|
|
152
|
+
if (delta.doors !== undefined) {
|
|
153
|
+
result.doors = applyMap(snap.doors ?? {}, delta.doors);
|
|
154
|
+
}
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
/** The schema as of every migration in the folder: the legacy snapshot, then each timestamp migration's delta. */
|
|
158
|
+
export function readFoldedSnapshot(folder) {
|
|
159
|
+
let snap = readLegacySnapshot(folder);
|
|
160
|
+
for (const { tag } of listMigrations(folder)) {
|
|
161
|
+
if (!isTimestampTag(tag))
|
|
162
|
+
continue;
|
|
163
|
+
const path = deltaPath(folder, tag);
|
|
164
|
+
if (!existsSync(path)) {
|
|
165
|
+
throw new Error(`Missing snapshot delta ${path} for migration ${tag}.sql; the delta is written beside the migration by \`pipework generate\` and is committed with it.`);
|
|
166
|
+
}
|
|
167
|
+
snap = applyDelta(snap, JSON.parse(readFileSync(path, 'utf-8')));
|
|
168
|
+
}
|
|
169
|
+
return snap;
|
|
170
|
+
}
|
|
171
|
+
function readLegacySnapshot(folder) {
|
|
172
|
+
const journal = readLegacyJournal(folder);
|
|
173
|
+
if (journal === null || journal.length === 0)
|
|
174
|
+
return EMPTY_SNAPSHOT;
|
|
175
|
+
const last = journal[journal.length - 1];
|
|
176
|
+
const idx = last.idx ?? journal.length - 1;
|
|
177
|
+
const path = join(folder, 'meta', `${String(idx).padStart(4, '0')}_snapshot.json`);
|
|
178
|
+
if (!existsSync(path))
|
|
179
|
+
return EMPTY_SNAPSHOT;
|
|
180
|
+
const raw = JSON.parse(readFileSync(path, 'utf-8'));
|
|
181
|
+
if (raw.version === '7')
|
|
182
|
+
return EMPTY_SNAPSHOT;
|
|
183
|
+
return raw;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../../src/data/migrate/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-definitions.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/internal-definitions.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAE5D,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE,GACtC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"internal-definitions.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/internal-definitions.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAE5D,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE;IAAE,iBAAiB,EAAE,OAAO,CAAA;CAAE,GACtC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiKlC"}
|
|
@@ -35,6 +35,10 @@ export async function loadInternalDefinitions(blueprint, options) {
|
|
|
35
35
|
result['__pipework_access_link_check_spent'] = accessLinkCheckSpent;
|
|
36
36
|
result['__pipework_access_link_miss'] = accessLinkMiss;
|
|
37
37
|
}
|
|
38
|
+
if (blueprint.joinRequests !== undefined) {
|
|
39
|
+
const { joinRequest } = await import('../../infra/join-requests/schema.js');
|
|
40
|
+
result['__pipework_join_request'] = joinRequest;
|
|
41
|
+
}
|
|
38
42
|
if (blueprint.credits !== undefined) {
|
|
39
43
|
const { creditGrant, creditReservation, creditDraw, creditLedger, creditAccount } = await import('../../infra/credits/schema.js');
|
|
40
44
|
result['__pipework_credit_grant'] = creditGrant;
|
|
@@ -43,6 +47,15 @@ export async function loadInternalDefinitions(blueprint, options) {
|
|
|
43
47
|
result['__pipework_credit_ledger'] = creditLedger;
|
|
44
48
|
result['__pipework_credit_account'] = creditAccount;
|
|
45
49
|
}
|
|
50
|
+
if (blueprint.creditLine !== undefined) {
|
|
51
|
+
const { creditLine, creditLineReservation, creditLineEntry, creditLinePayment, creditLinePaymentApplication, creditLineAuthorization, } = await import('../../infra/credit-line/schema.js');
|
|
52
|
+
result['__pipework_credit_line'] = creditLine;
|
|
53
|
+
result['__pipework_credit_line_reservation'] = creditLineReservation;
|
|
54
|
+
result['__pipework_credit_line_entry'] = creditLineEntry;
|
|
55
|
+
result['__pipework_credit_line_payment'] = creditLinePayment;
|
|
56
|
+
result['__pipework_credit_line_payment_application'] = creditLinePaymentApplication;
|
|
57
|
+
result['__pipework_credit_line_authorization'] = creditLineAuthorization;
|
|
58
|
+
}
|
|
46
59
|
if (blueprint.quota !== undefined) {
|
|
47
60
|
const { outboundQuota } = await import('../../infra/quota/schema.js');
|
|
48
61
|
result['__pipework_outbound_quota'] = outboundQuota;
|
|
@@ -51,6 +64,13 @@ export async function loadInternalDefinitions(blueprint, options) {
|
|
|
51
64
|
const { storageFile } = await import('../../infra/storage/schema.js');
|
|
52
65
|
result['__pipework_storage_file'] = storageFile;
|
|
53
66
|
}
|
|
67
|
+
if (blueprint.crawl !== undefined) {
|
|
68
|
+
const { crawls, crawlUrls, crawlHosts, crawlResources } = await import('../../infra/crawl/schema.js');
|
|
69
|
+
result['__pipework_crawl'] = crawls;
|
|
70
|
+
result['__pipework_crawl_url'] = crawlUrls;
|
|
71
|
+
result['__pipework_crawl_host'] = crawlHosts;
|
|
72
|
+
result['__pipework_crawl_resource'] = crawlResources;
|
|
73
|
+
}
|
|
54
74
|
if (blueprint.alerts !== undefined) {
|
|
55
75
|
const { alerts, alertOccurrences, alertDeliveries, alertSourceState, unitFaults, loopBeats, faults } = await import('../../infra/alerts/schema.js');
|
|
56
76
|
result['__pipework_alerts'] = alerts;
|
|
@@ -95,10 +115,11 @@ export async function loadInternalDefinitions(blueprint, options) {
|
|
|
95
115
|
result['__pipework_rate_limit_counts'] = rateLimitCounts;
|
|
96
116
|
}
|
|
97
117
|
if (blueprint.email !== undefined) {
|
|
98
|
-
const { emailMessages, emailSuppressions, emailInbound } = await import('../../infra/email/schema.js');
|
|
118
|
+
const { emailMessages, emailSuppressions, emailInbound, emailUnsubscribes } = await import('../../infra/email/schema.js');
|
|
99
119
|
result['__pipework_email_messages'] = emailMessages;
|
|
100
120
|
result['__pipework_email_suppressions'] = emailSuppressions;
|
|
101
121
|
result['__pipework_email_inbound'] = emailInbound;
|
|
122
|
+
result['__pipework_email_unsubscribes'] = emailUnsubscribes;
|
|
102
123
|
}
|
|
103
124
|
// Queue tables register at createQueue() time (worker surfaces create their
|
|
104
125
|
// queue at construction, so config discovery populates the registry before
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-definitions.js","sourceRoot":"","sources":["../../../src/data/migrate/internal-definitions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"internal-definitions.js","sourceRoot":"","sources":["../../../src/data/migrate/internal-definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,5 +33,7 @@ export declare class FrameworkTableColumnError extends Error {
|
|
|
33
33
|
export declare function provisionFrameworkTables(db: DB, blueprint: Blueprint, traceConfig: TracePartitionConfig, isDefaultDatabase: boolean, options?: {
|
|
34
34
|
unlogged: boolean;
|
|
35
35
|
rls?: FrameworkRls | undefined;
|
|
36
|
+
/** Told as each step starts; a partition reports `step` 'partition' with `i/n name` as detail. */
|
|
37
|
+
onProgress?: ((step: string, detail?: string) => void) | undefined;
|
|
36
38
|
}): Promise<FrameworkTablesResult>;
|
|
37
39
|
//# sourceMappingURL=provision-framework.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision-framework.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAS/F,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhF,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAExE;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAkB,IAAI,+BAA8B;CACrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,oBAAoB,EACjC,iBAAiB,EAAE,OAAO,EAC1B,OAAO,GAAE;
|
|
1
|
+
{"version":3,"file":"provision-framework.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,gCAAgC,CAAA;AAS/F,OAAO,EAA4B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEhF,MAAM,WAAW,qBAAqB;IACpC,yDAAyD;IACzD,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,8BAA8B;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAExE;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,SAAkB,IAAI,+BAA8B;CACrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,EAAE,EACN,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,oBAAoB,EACjC,iBAAiB,EAAE,OAAO,EAC1B,OAAO,GAAE;IACP,QAAQ,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,YAAY,GAAG,SAAS,CAAA;IAC9B,kGAAkG;IAClG,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CAC9C,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAiEhC"}
|
|
@@ -39,6 +39,7 @@ export class FrameworkTableColumnError extends Error {
|
|
|
39
39
|
*/
|
|
40
40
|
export async function provisionFrameworkTables(db, blueprint, traceConfig, isDefaultDatabase, options = { unlogged: true }) {
|
|
41
41
|
const result = { created: [], columnsAdded: [], partitionsCreated: [] };
|
|
42
|
+
const progress = options.onProgress ?? (() => { });
|
|
42
43
|
if (!isDefaultDatabase)
|
|
43
44
|
return result;
|
|
44
45
|
if (blueprint.trace === undefined && blueprint.audit === undefined)
|
|
@@ -72,18 +73,29 @@ export async function provisionFrameworkTables(db, blueprint, traceConfig, isDef
|
|
|
72
73
|
result.columnsAdded.push(`${table.name}.${column.name}`);
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
|
-
|
|
76
|
+
progress('tables');
|
|
77
|
+
const createStatements = emitSQL(createOps);
|
|
78
|
+
for (const [i, statement] of createStatements.entries()) {
|
|
76
79
|
await db.execute(sql.raw(options.unlogged ? makeTablesUnlogged(statement) : statement));
|
|
80
|
+
progress('tables', `create ${i + 1}/${createStatements.length}`);
|
|
77
81
|
}
|
|
78
|
-
for (const statement of alterStatements)
|
|
82
|
+
for (const [i, statement] of alterStatements.entries()) {
|
|
79
83
|
await db.execute(sql.raw(statement));
|
|
84
|
+
progress('tables', `alter ${i + 1}/${alterStatements.length}`);
|
|
85
|
+
}
|
|
80
86
|
if (tables.some(t => t.name === 'audit_record'))
|
|
81
87
|
await db.execute(sql.raw(AUDIT_ENTITY_INDEX_SQL));
|
|
82
|
-
if (blueprint.audit?.chain === true)
|
|
88
|
+
if (blueprint.audit?.chain === true) {
|
|
89
|
+
progress('audit-chain');
|
|
83
90
|
await installAuditChain(db);
|
|
84
|
-
|
|
91
|
+
}
|
|
92
|
+
if (options.rls !== undefined) {
|
|
93
|
+
progress('policies');
|
|
85
94
|
await installFrameworkPolicies(db, tables.map(t => t.name), options.rls);
|
|
86
|
-
|
|
95
|
+
}
|
|
96
|
+
const synced = await syncTracePartitions(db, traceConfig, undefined, {
|
|
97
|
+
onPartition: (name, index, total) => progress('partition', `${index}/${total} ${name}`),
|
|
98
|
+
});
|
|
87
99
|
result.partitionsCreated.push(...synced.created);
|
|
88
100
|
return result;
|
|
89
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provision-framework.js","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAC7E,4EAA4E;AAC5E,uEAAuE;AACvE,+EAA+E;AAC/E,uCAAuC;AAEvC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,OAAO,EAAE,mBAAmB,EAA6B,MAAM,gCAAgC,CAAA;AAC/F,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAqB,MAAM,oBAAoB,CAAA;AAWhF,MAAM,UAAU,sBAAsB,CAAC,CAAwB;IAC7D,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAChC,IAAI,GAAG,2BAA2B,CAAA;CACrD;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAM,EACN,SAAoB,EACpB,WAAiC,EACjC,iBAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"provision-framework.js","sourceRoot":"","sources":["../../../src/data/migrate/provision-framework.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,6 +64,8 @@ export interface PwIndexSnapshot {
|
|
|
64
64
|
where: string | undefined;
|
|
65
65
|
concurrently: boolean;
|
|
66
66
|
with: Record<string, unknown> | undefined;
|
|
67
|
+
/** Present (true) only for a NULLS NOT DISTINCT unique index, so stored snapshots stay unchanged. */
|
|
68
|
+
nullsNotDistinct?: boolean;
|
|
67
69
|
}
|
|
68
70
|
export interface PwIndexColumnSnapshot {
|
|
69
71
|
expression: string;
|
|
@@ -82,6 +84,8 @@ export interface PwForeignKeySnapshot {
|
|
|
82
84
|
foreignColumns: string[];
|
|
83
85
|
onUpdate: string | undefined;
|
|
84
86
|
onDelete: string | undefined;
|
|
87
|
+
/** Database names cleared by ON DELETE SET NULL / SET DEFAULT (Postgres 15+); absent for the whole key. */
|
|
88
|
+
onDeleteColumns?: string[];
|
|
85
89
|
}
|
|
86
90
|
export interface PwCheckSnapshot {
|
|
87
91
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/snapshot.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAMzC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAK3C,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAA;IACd,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACvC,yGAAyG;IACzG,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,SAAS,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;CAC3G;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;IACjD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACvC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IACnD,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IAC3D,WAAW,EAAE,mBAAmB,GAAG,SAAS,CAAA;CAC7C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,CAAA;IACjB,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,GAAG,SAAS,CAAA;IACrD,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC9B,QAAQ,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAA;CACzH;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAA;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,qBAAqB,EAAE,CAAA;IAChC,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IACzB,YAAY,EAAE,OAAO,CAAA;IACrB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../../src/data/migrate/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,6 +102,7 @@ export function buildSnapshot(imports, prevId) {
|
|
|
102
102
|
where: idx.config.where !== undefined ? serializeSQL(idx.config.where) : undefined,
|
|
103
103
|
concurrently: idx.config.concurrently ?? false,
|
|
104
104
|
with: idx.config.with,
|
|
105
|
+
...(idx.config.nullsNotDistinct === true ? { nullsNotDistinct: true } : {}),
|
|
105
106
|
};
|
|
106
107
|
}
|
|
107
108
|
const foreignKeys = {};
|
|
@@ -117,6 +118,7 @@ export function buildSnapshot(imports, prevId) {
|
|
|
117
118
|
foreignColumns: ref.foreignColumns.map(c => c.name),
|
|
118
119
|
onUpdate: fk.onUpdate,
|
|
119
120
|
onDelete: fk.onDelete,
|
|
121
|
+
...(fk.onDeleteColumns !== undefined ? { onDeleteColumns: [...fk.onDeleteColumns] } : {}),
|
|
120
122
|
};
|
|
121
123
|
}
|
|
122
124
|
const checks = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/data/migrate/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../../src/data/migrate/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,9 +51,11 @@ function emitOp(op) {
|
|
|
51
51
|
case 'drop_foreign_key': return [emitDropForeignKey(op.tableName, op.tableSchema, op.fk.name)];
|
|
52
52
|
case 'add_check': return [emitAddCheck(op.tableName, op.tableSchema, op.check.name, op.check.value)];
|
|
53
53
|
case 'drop_check': return [emitDropConstraint(op.tableName, op.tableSchema, op.check.name)];
|
|
54
|
-
case 'add_unique': return
|
|
54
|
+
case 'add_unique': return emitAddUnique(op.tableName, op.tableSchema, op.unique, op.tablePartitioned);
|
|
55
|
+
case 'replace_unique': return emitReplaceUnique(op.tableName, op.tableSchema, op.from, op.to, op.tablePartitioned);
|
|
55
56
|
case 'drop_unique': return [emitDropConstraint(op.tableName, op.tableSchema, op.unique.name)];
|
|
56
|
-
case 'add_composite_pk': return
|
|
57
|
+
case 'add_composite_pk': return emitAddCompositePK(op.tableName, op.tableSchema, op.pk, op.tablePartitioned);
|
|
58
|
+
case 'replace_composite_pk': return emitReplaceCompositePK(op.tableName, op.tableSchema, op.from, op.to, op.tablePartitioned);
|
|
57
59
|
case 'drop_composite_pk': return [emitDropConstraint(op.tableName, op.tableSchema, op.pk.name)];
|
|
58
60
|
}
|
|
59
61
|
}
|
|
@@ -204,11 +206,12 @@ function emitCreateIndex(tableName, tableSchema, idx) {
|
|
|
204
206
|
expr += ` NULLS ${col.nulls.toUpperCase()}`;
|
|
205
207
|
return expr;
|
|
206
208
|
});
|
|
209
|
+
const nullsNotDistinct = idx.nullsNotDistinct === true ? ' NULLS NOT DISTINCT' : '';
|
|
207
210
|
const withOpts = idx.with !== undefined && Object.keys(idx.with).length > 0
|
|
208
211
|
? ` WITH (${Object.entries(idx.with).map(([k, v]) => `${k} = ${String(v)}`).join(', ')})`
|
|
209
212
|
: '';
|
|
210
213
|
const where = idx.where !== undefined ? ` WHERE ${idx.where}` : '';
|
|
211
|
-
return `CREATE ${unique}INDEX ${concurrent}${q(idx.name)} ON ${tbl}${method} (${colExprs.join(', ')})${withOpts}${where}`;
|
|
214
|
+
return `CREATE ${unique}INDEX ${concurrent}${q(idx.name)} ON ${tbl}${method} (${colExprs.join(', ')})${nullsNotDistinct}${withOpts}${where}`;
|
|
212
215
|
}
|
|
213
216
|
function qualifiedIndex(tableSchema, name) {
|
|
214
217
|
return tableSchema === 'public' ? q(name) : `${q(tableSchema)}.${q(name)}`;
|
|
@@ -218,16 +221,18 @@ function emitDropIndex(tableSchema, idx) {
|
|
|
218
221
|
}
|
|
219
222
|
/** Builds the changed index beside the old one, drops the old, renames the new into its place. */
|
|
220
223
|
function emitReplaceIndex(tableName, tableSchema, from, to) {
|
|
221
|
-
|
|
222
|
-
while (Buffer.byteLength(stem) > 59)
|
|
223
|
-
stem = stem.slice(0, -1);
|
|
224
|
-
const tmp = `${stem}_new`;
|
|
224
|
+
const tmp = tempIndexName(to.name);
|
|
225
225
|
return [
|
|
226
|
+
dropLeftoverIndex(tableSchema, tmp),
|
|
226
227
|
emitCreateIndex(tableName, tableSchema, { ...to, name: tmp, concurrently: true }),
|
|
227
228
|
`DROP INDEX CONCURRENTLY IF EXISTS ${qualifiedIndex(tableSchema, from.name)}`,
|
|
228
229
|
`ALTER INDEX ${qualifiedIndex(tableSchema, tmp)} RENAME TO ${q(to.name)}`,
|
|
229
230
|
];
|
|
230
231
|
}
|
|
232
|
+
/** A failed CONCURRENTLY build leaves an INVALID index; clear it so a rerun can build again. */
|
|
233
|
+
function dropLeftoverIndex(tableSchema, name) {
|
|
234
|
+
return `DROP INDEX CONCURRENTLY IF EXISTS ${qualifiedIndex(tableSchema, name)}`;
|
|
235
|
+
}
|
|
231
236
|
function emitAddForeignKey(tableName, tableSchema, fk, tablePartitioned) {
|
|
232
237
|
const tbl = qualifiedTable(tableSchema, tableName);
|
|
233
238
|
const cols = fk.columns.map(q).join(', ');
|
|
@@ -239,6 +244,8 @@ function emitAddForeignKey(tableName, tableSchema, fk, tablePartitioned) {
|
|
|
239
244
|
}
|
|
240
245
|
if (fk.onDelete !== undefined && fk.onDelete !== 'no action') {
|
|
241
246
|
stmt += ` ON DELETE ${fk.onDelete.toUpperCase()}`;
|
|
247
|
+
if (fk.onDeleteColumns !== undefined)
|
|
248
|
+
stmt += ` (${fk.onDeleteColumns.map(q).join(', ')})`;
|
|
242
249
|
}
|
|
243
250
|
// A partitioned table rejects NOT VALID foreign keys — Postgres requires the
|
|
244
251
|
// constraint be created already valid. For an ordinary table, ADD ... NOT
|
|
@@ -260,11 +267,58 @@ function emitAddCheck(tableName, tableSchema, checkName, value) {
|
|
|
260
267
|
function emitDropConstraint(tableName, tableSchema, constraintName) {
|
|
261
268
|
return `ALTER TABLE ${qualifiedTable(tableSchema, tableName)} DROP CONSTRAINT ${q(constraintName)}`;
|
|
262
269
|
}
|
|
263
|
-
function
|
|
264
|
-
|
|
265
|
-
|
|
270
|
+
function tempIndexName(name) {
|
|
271
|
+
let stem = name;
|
|
272
|
+
while (Buffer.byteLength(stem) > 59)
|
|
273
|
+
stem = stem.slice(0, -1);
|
|
274
|
+
return `${stem}_new`;
|
|
275
|
+
}
|
|
276
|
+
function keyIndex(name, columns, nullsNotDistinct) {
|
|
277
|
+
return {
|
|
278
|
+
name,
|
|
279
|
+
columns: columns.map(c => ({ expression: c, isExpression: false, order: undefined, nulls: undefined, opClass: undefined })),
|
|
280
|
+
unique: true,
|
|
281
|
+
method: 'btree',
|
|
282
|
+
where: undefined,
|
|
283
|
+
concurrently: true,
|
|
284
|
+
with: undefined,
|
|
285
|
+
...(nullsNotDistinct ? { nullsNotDistinct: true } : {}),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* A key constraint on a populated table is built as a unique index
|
|
290
|
+
* CONCURRENTLY, then attached with USING INDEX (a brief lock, no build under
|
|
291
|
+
* ACCESS EXCLUSIVE). `replaceOld` swaps an existing constraint in the same
|
|
292
|
+
* statement so uniqueness is never absent. A partitioned table cannot build
|
|
293
|
+
* concurrently on its parent, so it keeps the plain ADD CONSTRAINT.
|
|
294
|
+
*/
|
|
295
|
+
function emitKeyConstraint(tableName, tableSchema, kind, key, partitioned, replaceOld) {
|
|
296
|
+
const tbl = qualifiedTable(tableSchema, tableName);
|
|
297
|
+
const drop = replaceOld !== undefined ? `DROP CONSTRAINT ${q(replaceOld)}, ` : '';
|
|
298
|
+
if (partitioned) {
|
|
299
|
+
const nd = key.nullsNotDistinct === true ? ' NULLS NOT DISTINCT' : '';
|
|
300
|
+
const add = `ADD CONSTRAINT ${q(key.name)} ${kind}${nd} (${key.columns.map(q).join(', ')})`;
|
|
301
|
+
return replaceOld !== undefined
|
|
302
|
+
? [`ALTER TABLE ${tbl} DROP CONSTRAINT ${q(replaceOld)}`, `ALTER TABLE ${tbl} ${add}`]
|
|
303
|
+
: [`ALTER TABLE ${tbl} ${add}`];
|
|
304
|
+
}
|
|
305
|
+
const indexName = replaceOld !== undefined ? tempIndexName(key.name) : key.name;
|
|
306
|
+
return [
|
|
307
|
+
dropLeftoverIndex(tableSchema, indexName),
|
|
308
|
+
emitCreateIndex(tableName, tableSchema, keyIndex(indexName, key.columns, key.nullsNotDistinct === true)),
|
|
309
|
+
`ALTER TABLE ${tbl} ${drop}ADD CONSTRAINT ${q(key.name)} ${kind} USING INDEX ${q(indexName)}`,
|
|
310
|
+
];
|
|
311
|
+
}
|
|
312
|
+
function emitAddUnique(tableName, tableSchema, uc, partitioned) {
|
|
313
|
+
return emitKeyConstraint(tableName, tableSchema, 'UNIQUE', uc, partitioned, undefined);
|
|
314
|
+
}
|
|
315
|
+
function emitReplaceUnique(tableName, tableSchema, from, to, partitioned) {
|
|
316
|
+
return emitKeyConstraint(tableName, tableSchema, 'UNIQUE', to, partitioned, from.name);
|
|
317
|
+
}
|
|
318
|
+
function emitAddCompositePK(tableName, tableSchema, pk, partitioned) {
|
|
319
|
+
return emitKeyConstraint(tableName, tableSchema, 'PRIMARY KEY', pk, partitioned, undefined);
|
|
266
320
|
}
|
|
267
|
-
function
|
|
268
|
-
return
|
|
321
|
+
function emitReplaceCompositePK(tableName, tableSchema, from, to, partitioned) {
|
|
322
|
+
return emitKeyConstraint(tableName, tableSchema, 'PRIMARY KEY', to, partitioned, from.name);
|
|
269
323
|
}
|
|
270
324
|
//# sourceMappingURL=sql-emit.js.map
|