@betterportal/config-manager 10.6.25 → 10.6.26
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/lib/.bsb/clients/service-betterportal-config-manager.d.ts +1 -1
- package/lib/.bsb/clients/service-betterportal-config-manager.js +1 -1
- package/lib/bp-contracts/org.betterportal.config-manager.json +1 -1
- package/lib/plugins/service-betterportal-config-manager/adminApi.d.ts +1 -0
- package/lib/plugins/service-betterportal-config-manager/adminApi.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/adminApi.js +239 -191
- package/lib/plugins/service-betterportal-config-manager/adminApi.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/preview-environments/_renderer.bootstrap5/GET.js +2 -2
- package/lib/plugins/service-betterportal-config-manager/bp-routes/preview-environments/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/routes/_renderer.bootstrap5/GET.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/bp-routes/routes/_renderer.bootstrap5/GET.js +20 -19
- package/lib/plugins/service-betterportal-config-manager/bp-routes/routes/_renderer.bootstrap5/GET.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/index.d.ts +0 -1
- package/lib/plugins/service-betterportal-config-manager/index.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/index.js +3 -5
- package/lib/plugins/service-betterportal-config-manager/index.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewEnvironments.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/previewEnvironments.js +1 -0
- package/lib/plugins/service-betterportal-config-manager/previewEnvironments.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/storage/core.d.ts +3 -1
- package/lib/plugins/service-betterportal-config-manager/storage/core.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/storage/core.js +23 -9
- package/lib/plugins/service-betterportal-config-manager/storage/core.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/storage/entities.d.ts +20 -0
- package/lib/plugins/service-betterportal-config-manager/storage/entities.d.ts.map +1 -0
- package/lib/plugins/service-betterportal-config-manager/storage/entities.js +162 -0
- package/lib/plugins/service-betterportal-config-manager/storage/entities.js.map +1 -0
- package/lib/plugins/service-betterportal-config-manager/storage/postgres.d.ts +7 -0
- package/lib/plugins/service-betterportal-config-manager/storage/postgres.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/storage/postgres.js +201 -56
- package/lib/plugins/service-betterportal-config-manager/storage/postgres.js.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/tenantManagement.d.ts +2 -0
- package/lib/plugins/service-betterportal-config-manager/tenantManagement.d.ts.map +1 -1
- package/lib/plugins/service-betterportal-config-manager/tenantManagement.js +13 -2
- package/lib/plugins/service-betterportal-config-manager/tenantManagement.js.map +1 -1
- package/lib/schemas/service-betterportal-config-manager.json +1 -1
- package/lib/schemas/service-betterportal-config-manager.plugin.json +1 -1
- package/package.json +3 -3
|
@@ -5,13 +5,14 @@ import { Pool } from "pg";
|
|
|
5
5
|
import * as yaml from "yaml";
|
|
6
6
|
import { BetterPortalConfigSchema } from "@betterportal/framework";
|
|
7
7
|
import { BaseStorage, ConfigRevisionConflictError, hashApiKey, migrateOfficialPluginIds, migrateRouteOperations, migrateRouteParamSyntax } from "./core.js";
|
|
8
|
+
import { assembleConfig, changedEntityKeys, entityClaims, entityReferences, keyOf, splitConfig } from "./entities.js";
|
|
8
9
|
function quotePgIdent(identifier) {
|
|
9
10
|
if (!/^[a-z_][a-z0-9_]*$/i.test(identifier))
|
|
10
11
|
throw new Error(`Invalid PostgreSQL identifier: ${identifier}`);
|
|
11
12
|
return `"${identifier.replace(/"/g, "\"\"")}"`;
|
|
12
13
|
}
|
|
13
14
|
export { ConfigRevisionConflictError } from "./core.js";
|
|
14
|
-
const SCHEMA_VERSION =
|
|
15
|
+
const SCHEMA_VERSION = 2;
|
|
15
16
|
export class PostgresStorage extends BaseStorage {
|
|
16
17
|
backend = "postgres";
|
|
17
18
|
connectionString;
|
|
@@ -24,6 +25,9 @@ export class PostgresStorage extends BaseStorage {
|
|
|
24
25
|
deliveriesTable;
|
|
25
26
|
outboxTable;
|
|
26
27
|
activityTable;
|
|
28
|
+
entitiesTable;
|
|
29
|
+
referencesTable;
|
|
30
|
+
revisionSequence;
|
|
27
31
|
activityLoad;
|
|
28
32
|
activityLoadedAt = 0;
|
|
29
33
|
pool = null;
|
|
@@ -46,6 +50,9 @@ export class PostgresStorage extends BaseStorage {
|
|
|
46
50
|
this.deliveriesTable = quotePgIdent(`${this.tableName}_webhook_deliveries`);
|
|
47
51
|
this.outboxTable = quotePgIdent(`${this.tableName}_outbox`);
|
|
48
52
|
this.activityTable = quotePgIdent(`${this.tableName}_activity`);
|
|
53
|
+
this.entitiesTable = quotePgIdent(`${this.tableName}_entities`);
|
|
54
|
+
this.referencesTable = quotePgIdent(`${this.tableName}_references`);
|
|
55
|
+
this.revisionSequence = quotePgIdent(`${this.tableName}_entity_revision`);
|
|
49
56
|
}
|
|
50
57
|
async initialize(paths = {}) {
|
|
51
58
|
this.legacyPaths = paths;
|
|
@@ -63,7 +70,7 @@ export class PostgresStorage extends BaseStorage {
|
|
|
63
70
|
this.configLoad = null;
|
|
64
71
|
return this.loadConfig();
|
|
65
72
|
}
|
|
66
|
-
this.cachedConfig =
|
|
73
|
+
this.cachedConfig = loaded;
|
|
67
74
|
return this.cloneSnapshot(this.cachedConfig);
|
|
68
75
|
}
|
|
69
76
|
finally {
|
|
@@ -73,63 +80,125 @@ export class PostgresStorage extends BaseStorage {
|
|
|
73
80
|
}
|
|
74
81
|
async saveConfig(config, options) {
|
|
75
82
|
await this.ensureSchema();
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
83
|
+
const baseline = this.snapshots.get(config);
|
|
84
|
+
if (!baseline)
|
|
85
|
+
throw new Error("Config must be loaded from this store before saving; detached whole-platform replacements are not supported");
|
|
86
|
+
const proposed = splitConfig(this.parseConfig(config));
|
|
87
|
+
// Cached manifests belong to their concrete service registration. Deleting
|
|
88
|
+
// a registration also deletes its known cache, whichever API initiated it.
|
|
89
|
+
for (const [key, entity] of proposed)
|
|
90
|
+
if (entity.kind === "manifestCache") {
|
|
91
|
+
if (entityReferences(entity, baseline.entities).some(ref => !proposed.has(ref)))
|
|
92
|
+
proposed.delete(key);
|
|
93
|
+
}
|
|
94
|
+
const changed = changedEntityKeys(baseline.entities, proposed);
|
|
79
95
|
const client = await this.getPool().connect();
|
|
80
96
|
try {
|
|
81
97
|
await client.query("begin");
|
|
82
98
|
if (options?.completeAction)
|
|
83
99
|
await this.finishAction(client, options.completeAction);
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
100
|
+
// Shared dependency locks allow two apps in a tenant to save concurrently.
|
|
101
|
+
// Exclusive locks cover only changed entities and their uniqueness claims.
|
|
102
|
+
const locks = new Map();
|
|
103
|
+
const dependencies = new Set();
|
|
104
|
+
for (const key of changed) {
|
|
105
|
+
locks.set(key, true);
|
|
106
|
+
for (const entities of [baseline.entities, proposed]) {
|
|
107
|
+
const entity = entities.get(key);
|
|
108
|
+
if (!entity)
|
|
109
|
+
continue;
|
|
110
|
+
for (const claim of entityClaims(entity))
|
|
111
|
+
locks.set(claim, true);
|
|
112
|
+
for (const ref of entityReferences(entity, entities)) {
|
|
113
|
+
dependencies.add(ref);
|
|
114
|
+
if (!locks.has(ref))
|
|
115
|
+
locks.set(ref, false);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
91
118
|
}
|
|
92
|
-
|
|
93
|
-
|
|
119
|
+
for (const [key, exclusive] of [...locks].sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0)) {
|
|
120
|
+
await client.query(`select ${exclusive ? "pg_advisory_xact_lock" : "pg_advisory_xact_lock_shared"}(hashtextextended($1, 0))`, [JSON.stringify([this.tableName, this.rowId, key])]);
|
|
121
|
+
}
|
|
122
|
+
const current = await this.readSnapshot(client);
|
|
123
|
+
for (const key of new Set([...changed, ...dependencies])) {
|
|
124
|
+
const expected = baseline.revisions.get(key) ?? 0;
|
|
125
|
+
const actual = current.revisions.get(key) ?? 0;
|
|
126
|
+
if (expected !== actual) {
|
|
127
|
+
this.invalidate();
|
|
128
|
+
throw new ConfigRevisionConflictError(expected, actual, key);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
const merged = new Map(current.entities);
|
|
132
|
+
for (const key of changed) {
|
|
133
|
+
const entity = proposed.get(key);
|
|
134
|
+
if (entity)
|
|
135
|
+
merged.set(key, entity);
|
|
136
|
+
else
|
|
137
|
+
merged.delete(key);
|
|
138
|
+
}
|
|
139
|
+
// A sync may have created a cache after the deletion snapshot was loaded.
|
|
140
|
+
// Reject that stale deletion before reaching the FK; a fresh retry includes
|
|
141
|
+
// the cache in its deletion set and locks both records in canonical order.
|
|
142
|
+
for (const entity of merged.values())
|
|
143
|
+
if (entity.kind === "manifestCache") {
|
|
144
|
+
const removed = entityReferences(entity, current.entities).find(ref => !merged.has(ref));
|
|
145
|
+
if (removed) {
|
|
146
|
+
this.invalidate();
|
|
147
|
+
throw new ConfigRevisionConflictError(baseline.revisions.get(keyOf(entity)) ?? 0, current.revisions.get(keyOf(entity)) ?? 0, keyOf(entity));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
const validated = this.parseConfig(assembleConfig(merged.values()));
|
|
151
|
+
this.validateConfigReferences(validated);
|
|
152
|
+
// Validate uniqueness against the current committed state, under claim locks.
|
|
153
|
+
const claims = new Set();
|
|
154
|
+
for (const entity of merged.values())
|
|
155
|
+
for (const claim of entityClaims(entity)) {
|
|
156
|
+
if (claims.has(claim))
|
|
157
|
+
throw new Error(`Configuration uniqueness conflict: ${claim}`);
|
|
158
|
+
claims.add(claim);
|
|
159
|
+
}
|
|
94
160
|
const resetActivity = [];
|
|
95
|
-
|
|
161
|
+
const services = new Map(validated.tenants.flatMap(tenant => tenant.services.map(service => [service.id, service])));
|
|
162
|
+
for (const previous of current.config.tenants.flatMap(tenant => tenant.services)) {
|
|
96
163
|
const next = services.get(previous.id);
|
|
97
|
-
if (!next || previous.apiKeyHash !== next.apiKeyHash || previous.hostname !== next.hostname
|
|
98
|
-
|| (previous.lastSeenAt && !next.lastSeenAt) || (previous.lastSyncAt && !next.lastSyncAt)) {
|
|
164
|
+
if (!next || previous.apiKeyHash !== next.apiKeyHash || previous.hostname !== next.hostname)
|
|
99
165
|
resetActivity.push(previous.id);
|
|
100
|
-
if (next) {
|
|
101
|
-
delete next.lastSeenAt;
|
|
102
|
-
delete next.lastSyncAt;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
166
|
}
|
|
106
167
|
if (resetActivity.length)
|
|
107
168
|
await client.query(`delete from ${this.activityTable} where scope_id = $1 and service_id = any($2::text[])`, [this.rowId, resetActivity]);
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
if (refreshedManifests.length) {
|
|
111
|
-
// Readiness compares manifest acceptance with delivery; both must use the DB clock.
|
|
169
|
+
const refreshed = changed.map(key => merged.get(key)).filter(entity => entity?.kind === "manifestCache");
|
|
170
|
+
if (refreshed.length) {
|
|
112
171
|
const clock = await client.query("select clock_timestamp() as now");
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
entry.fetchedAt = fetchedAt;
|
|
172
|
+
for (const entity of refreshed)
|
|
173
|
+
entity.value.fetchedAt = clock.rows[0].now.toISOString();
|
|
116
174
|
}
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
175
|
+
for (const key of changed) {
|
|
176
|
+
const entity = merged.get(key) ?? baseline.entities.get(key);
|
|
177
|
+
await client.query(`delete from ${this.referencesTable} where scope_id = $1 and kind = $2 and entity_id = $3`, [this.rowId, entity.kind, entity.id]);
|
|
178
|
+
if (merged.has(key)) {
|
|
179
|
+
await client.query(`insert into ${this.entitiesTable} (scope_id, kind, entity_id, value, revision)
|
|
180
|
+
values ($1, $2, $3, $4::jsonb, nextval('${this.revisionSequence}'))
|
|
181
|
+
on conflict (scope_id, kind, entity_id) do update set value = excluded.value, revision = excluded.revision`, [this.rowId, entity.kind, entity.id, JSON.stringify(entity.value)]);
|
|
182
|
+
}
|
|
183
|
+
else
|
|
184
|
+
await client.query(`delete from ${this.entitiesTable} where scope_id = $1 and kind = $2 and entity_id = $3`, [this.rowId, entity.kind, entity.id]);
|
|
185
|
+
}
|
|
186
|
+
for (const key of changed) {
|
|
187
|
+
const entity = merged.get(key);
|
|
188
|
+
if (entity)
|
|
189
|
+
await this.writeReferences(client, entity, merged);
|
|
126
190
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
191
|
+
if (changed.length) {
|
|
192
|
+
const result = await client.query(`select nextval('${this.revisionSequence}') as revision`);
|
|
193
|
+
await this.insertOutbox(client, "broadcast", "platform-config.changed", { revision: Number(result.rows[0].revision) });
|
|
194
|
+
}
|
|
195
|
+
const committed = await this.readSnapshot(client);
|
|
196
|
+
await client.query("commit");
|
|
197
|
+
// Update the caller's baseline as well as its value: subsequent saves must
|
|
198
|
+
// not mistake concurrent edits included in this commit for user deletions.
|
|
199
|
+
Object.assign(config, structuredClone(committed.config));
|
|
200
|
+
this.snapshots.set(config, committed);
|
|
201
|
+
this.invalidate();
|
|
133
202
|
}
|
|
134
203
|
catch (error) {
|
|
135
204
|
await client.query("rollback").catch(() => undefined);
|
|
@@ -139,6 +208,13 @@ export class PostgresStorage extends BaseStorage {
|
|
|
139
208
|
client.release();
|
|
140
209
|
}
|
|
141
210
|
}
|
|
211
|
+
async writeReferences(client, entity, entities) {
|
|
212
|
+
for (const ref of entityReferences(entity, entities)) {
|
|
213
|
+
const [kind, id] = JSON.parse(ref);
|
|
214
|
+
await client.query(`insert into ${this.referencesTable} (scope_id, kind, entity_id, target_kind, target_id)
|
|
215
|
+
values ($1, $2, $3, $4, $5)`, [this.rowId, entity.kind, entity.id, kind, id]);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
142
218
|
invalidate() {
|
|
143
219
|
this.configGeneration++;
|
|
144
220
|
this.cachedConfig = null;
|
|
@@ -167,19 +243,25 @@ export class PostgresStorage extends BaseStorage {
|
|
|
167
243
|
}
|
|
168
244
|
return structuredClone(this.credentialIndex.entries.get(hashApiKey(apiKey)) ?? null);
|
|
169
245
|
}
|
|
246
|
+
async readSnapshot(connection) {
|
|
247
|
+
const result = await connection.query(`select kind, entity_id, value, revision from ${this.entitiesTable} where scope_id = $1 order by ordinal`, [this.rowId]);
|
|
248
|
+
if (!result.rows.some(row => row.kind === "settings"))
|
|
249
|
+
throw new Error(`Config scope ${this.rowId} was not initialized`);
|
|
250
|
+
const rows = result.rows.map(row => ({ ...row, id: row.entity_id }));
|
|
251
|
+
const previewConfigs = new Set(rows.filter(row => row.kind === "previewConfigs").map(row => row.id));
|
|
252
|
+
for (const row of rows)
|
|
253
|
+
if (row.kind === "previewEnvironmentDeployments" && !previewConfigs.has(row.id)) {
|
|
254
|
+
throw new Error(`Persisted preview ${row.id} is missing its effective configuration`);
|
|
255
|
+
}
|
|
256
|
+
const config = this.parseConfig(assembleConfig(rows));
|
|
257
|
+
return { config, entities: splitConfig(config), revisions: new Map(rows.map(row => [keyOf(row), Number(row.revision)])) };
|
|
258
|
+
}
|
|
170
259
|
async readConfig(generation) {
|
|
171
|
-
|
|
172
|
-
if (!result.rows[0])
|
|
173
|
-
throw new Error(`Platform config row ${this.rowId} was not initialized`);
|
|
174
|
-
return {
|
|
175
|
-
config: this.parseConfig(result.rows[0].config),
|
|
176
|
-
revision: Number(result.rows[0].revision),
|
|
177
|
-
generation
|
|
178
|
-
};
|
|
260
|
+
return { ...await this.readSnapshot(this.getPool()), generation };
|
|
179
261
|
}
|
|
180
262
|
async cloneSnapshot(snapshot) {
|
|
181
263
|
const config = structuredClone(snapshot.config);
|
|
182
|
-
this.snapshots.set(config, snapshot
|
|
264
|
+
this.snapshots.set(config, snapshot);
|
|
183
265
|
const activity = await this.loadServiceActivity();
|
|
184
266
|
for (const tenant of config.tenants)
|
|
185
267
|
for (const service of tenant.services) {
|
|
@@ -187,6 +269,7 @@ export class PostgresStorage extends BaseStorage {
|
|
|
187
269
|
}
|
|
188
270
|
return config;
|
|
189
271
|
}
|
|
272
|
+
async close() { await this.pool?.end(); }
|
|
190
273
|
async touchServiceActivity(serviceId, field) {
|
|
191
274
|
await this.ensureSchema();
|
|
192
275
|
const column = field === "lastSeenAt" ? "last_seen_at" : "last_sync_at";
|
|
@@ -430,7 +513,7 @@ export class PostgresStorage extends BaseStorage {
|
|
|
430
513
|
}
|
|
431
514
|
async migrate() {
|
|
432
515
|
const client = await this.getPool().connect();
|
|
433
|
-
const lockName = `${this.tableName}
|
|
516
|
+
const lockName = `${this.tableName}:migrations`;
|
|
434
517
|
try {
|
|
435
518
|
await client.query("select pg_advisory_lock(hashtext($1))", [lockName]);
|
|
436
519
|
await client.query("begin");
|
|
@@ -464,11 +547,12 @@ export class PostgresStorage extends BaseStorage {
|
|
|
464
547
|
payload jsonb not null, attempts integer not null default 0, available_at timestamptz not null default now(),
|
|
465
548
|
lease_owner text, lease_until timestamptz, created_at timestamptz not null default now(),
|
|
466
549
|
primary key (scope_id, id))`);
|
|
467
|
-
const applied = await client.query(`select 1 from ${this.migrationsTable} where scope_id = $1 and version = $2`, [this.rowId,
|
|
550
|
+
const applied = await client.query(`select 1 from ${this.migrationsTable} where scope_id = $1 and version = $2`, [this.rowId, 1]);
|
|
468
551
|
if (applied.rows.length === 0) {
|
|
469
552
|
await this.importLegacyFiles(client);
|
|
470
|
-
await client.query(`insert into ${this.migrationsTable} (scope_id, version) values ($1, $2)`, [this.rowId,
|
|
553
|
+
await client.query(`insert into ${this.migrationsTable} (scope_id, version) values ($1, $2)`, [this.rowId, 1]);
|
|
471
554
|
}
|
|
555
|
+
await this.migrateEntities(client);
|
|
472
556
|
await client.query("commit");
|
|
473
557
|
}
|
|
474
558
|
catch (error) {
|
|
@@ -480,6 +564,67 @@ export class PostgresStorage extends BaseStorage {
|
|
|
480
564
|
client.release();
|
|
481
565
|
}
|
|
482
566
|
}
|
|
567
|
+
async migrateEntities(client) {
|
|
568
|
+
await client.query(`create sequence if not exists ${this.revisionSequence}`);
|
|
569
|
+
await client.query(`create table if not exists ${this.entitiesTable} (
|
|
570
|
+
scope_id text not null, kind text not null, entity_id text not null, value jsonb not null,
|
|
571
|
+
revision bigint not null, ordinal bigint generated always as identity,
|
|
572
|
+
primary key (scope_id, kind, entity_id), check (jsonb_typeof(value) = 'object'))`);
|
|
573
|
+
await client.query(`create table if not exists ${this.referencesTable} (
|
|
574
|
+
scope_id text not null, kind text not null, entity_id text not null, target_kind text not null, target_id text not null,
|
|
575
|
+
primary key (scope_id, kind, entity_id, target_kind, target_id),
|
|
576
|
+
foreign key (scope_id, kind, entity_id) references ${this.entitiesTable} (scope_id, kind, entity_id) deferrable initially deferred,
|
|
577
|
+
foreign key (scope_id, target_kind, target_id) references ${this.entitiesTable} (scope_id, kind, entity_id) deferrable initially deferred)`);
|
|
578
|
+
await client.query(`create index if not exists ${quotePgIdent(`${this.tableName}_ref_target_idx`)}
|
|
579
|
+
on ${this.referencesTable} (scope_id, target_kind, target_id)`);
|
|
580
|
+
const applied = await client.query(`select 1 from ${this.migrationsTable} where scope_id = $1 and version = $2`, [this.rowId, SCHEMA_VERSION]);
|
|
581
|
+
if (applied.rows.length)
|
|
582
|
+
return;
|
|
583
|
+
// Row lock waits for in-flight legacy saves. The trigger below fences later
|
|
584
|
+
// old-binary writes; the frozen row is retained as a migration backup.
|
|
585
|
+
const source = await client.query(`select config from ${this.quotedTableName} where id = $1 for update`, [this.rowId]);
|
|
586
|
+
if (!source.rows[0])
|
|
587
|
+
throw new Error("Legacy configuration is missing");
|
|
588
|
+
const config = this.parseConfig(source.rows[0].config);
|
|
589
|
+
this.validateConfigReferences(config);
|
|
590
|
+
const entities = splitConfig(config);
|
|
591
|
+
const claims = new Set();
|
|
592
|
+
for (const entity of entities.values())
|
|
593
|
+
for (const claim of entityClaims(entity)) {
|
|
594
|
+
if (claims.has(claim))
|
|
595
|
+
throw new Error(`Cannot migrate duplicate configuration claim: ${claim}`);
|
|
596
|
+
claims.add(claim);
|
|
597
|
+
}
|
|
598
|
+
for (const tenant of config.tenants)
|
|
599
|
+
for (const service of tenant.services) {
|
|
600
|
+
if (!service.lastSeenAt && !service.lastSyncAt)
|
|
601
|
+
continue;
|
|
602
|
+
await client.query(`insert into ${this.activityTable} (scope_id, service_id, last_seen_at, last_sync_at)
|
|
603
|
+
values ($1, $2, $3, $4) on conflict (scope_id, service_id) do update set
|
|
604
|
+
last_seen_at = greatest(${this.activityTable}.last_seen_at, excluded.last_seen_at),
|
|
605
|
+
last_sync_at = greatest(${this.activityTable}.last_sync_at, excluded.last_sync_at)`, [this.rowId, service.id, service.lastSeenAt ?? null, service.lastSyncAt ?? null]);
|
|
606
|
+
}
|
|
607
|
+
for (const entity of entities.values())
|
|
608
|
+
await client.query(`insert into ${this.entitiesTable} (scope_id, kind, entity_id, value, revision) values ($1, $2, $3, $4::jsonb, nextval('${this.revisionSequence}'))`, [this.rowId, entity.kind, entity.id, JSON.stringify(entity.value)]);
|
|
609
|
+
for (const entity of entities.values())
|
|
610
|
+
await this.writeReferences(client, entity, entities);
|
|
611
|
+
const restored = await this.readSnapshot(client);
|
|
612
|
+
if (changedEntityKeys(entities, restored.entities).length)
|
|
613
|
+
throw new Error("Config entity migration verification failed");
|
|
614
|
+
const fence = quotePgIdent(`${this.tableName}_legacy_write_fence`);
|
|
615
|
+
await client.query(`create or replace function ${fence}() returns trigger language plpgsql as $body$
|
|
616
|
+
begin
|
|
617
|
+
if exists (select 1 from ${this.migrationsTable} where scope_id = OLD.id and version = 2) then
|
|
618
|
+
raise exception 'Config storage migrated to independent entities; upgrade all config-manager replicas';
|
|
619
|
+
end if;
|
|
620
|
+
if TG_OP = 'DELETE' then return OLD; end if;
|
|
621
|
+
return NEW;
|
|
622
|
+
end $body$`);
|
|
623
|
+
await client.query(`drop trigger if exists legacy_write_fence on ${this.quotedTableName}`);
|
|
624
|
+
await client.query(`create trigger legacy_write_fence before update or delete on ${this.quotedTableName}
|
|
625
|
+
for each row execute function ${fence}()`);
|
|
626
|
+
await client.query(`insert into ${this.migrationsTable} (scope_id, version) values ($1, $2)`, [this.rowId, SCHEMA_VERSION]);
|
|
627
|
+
}
|
|
483
628
|
async importLegacyFiles(client) {
|
|
484
629
|
const existingConfig = await client.query(`select 1 from ${this.quotedTableName} where id = $1`, [this.rowId]);
|
|
485
630
|
if (existingConfig.rows.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-config-manager/storage/postgres.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../../src/plugins/service-betterportal-config-manager/storage/postgres.ts"],"names":[],"mappings":"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"}
|
|
@@ -326,4 +326,6 @@ export declare const handleDelete: import("@betterportal/framework").RouteHandle
|
|
|
326
326
|
tenantsPath: string;
|
|
327
327
|
serviceBaseUrl?: string | undefined;
|
|
328
328
|
}, never, Record<string, unknown>>;
|
|
329
|
+
export declare function deleteTenant(id: string): Promise<void>;
|
|
330
|
+
export declare function deleteApp(id: string): Promise<void>;
|
|
329
331
|
//# sourceMappingURL=tenantManagement.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenantManagement.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/tenantManagement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,UAAU,EAEhB,MAAM,yBAAyB,CAAC;AAwEjC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,mBAAmB,CAAC;AACtC,eAAO,MAAM,WAAW,qCAAqC,CAAC;AAE9D,eAAO,MAAM,UAAU,EAAE,UAA4D,CAAC;AAEtF,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,YAAY,CAAC,EAErD,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAGrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAWtB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAWrB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAYxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tenantManagement.d.ts","sourceRoot":"","sources":["../../../src/plugins/service-betterportal-config-manager/tenantManagement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,UAAU,EAEhB,MAAM,yBAAyB,CAAC;AAwEjC,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASzB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAExD,eAAO,MAAM,KAAK,mBAAmB,CAAC;AACtC,eAAO,MAAM,WAAW,qCAAqC,CAAC;AAE9D,eAAO,MAAM,UAAU,EAAE,UAA4D,CAAC;AAEtF,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,YAAY,CAAC,EAErD,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAGrB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAWtB,CAAC;AAEF,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAWrB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAYxB,CAAC;AA0GF,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS5D;AA8FD,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzD"}
|
|
@@ -201,13 +201,23 @@ async function updateTenant(body) {
|
|
|
201
201
|
tenant.active = boolValue(body.active);
|
|
202
202
|
await routeContext.storage.saveConfig(config);
|
|
203
203
|
}
|
|
204
|
-
|
|
204
|
+
function assertNoSourcePreviewGroups(config, entity, id) {
|
|
205
|
+
const groups = config.previewEnvironmentGroups.filter(group => entity === "tenant" ? group.sourceTenantId === id : group.sourceAppId === id);
|
|
206
|
+
if (groups.length === 0)
|
|
207
|
+
return;
|
|
208
|
+
throw Object.assign(new Error(`Cannot delete this ${entity}: it is the source of preview groups ${groups.map(group => group.name).join(", ")}. Delete those preview groups first.`), {
|
|
209
|
+
status: 409,
|
|
210
|
+
statusCode: 409
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
export async function deleteTenant(id) {
|
|
205
214
|
if (!id)
|
|
206
215
|
return;
|
|
207
216
|
const routeContext = getConfigManagerRouteContext();
|
|
208
217
|
const config = await routeContext.storage.loadConfig();
|
|
209
218
|
if (isPreviewTenant(config, id))
|
|
210
219
|
return;
|
|
220
|
+
assertNoSourcePreviewGroups(config, "tenant", id);
|
|
211
221
|
config.tenants = config.tenants.filter((tenant) => tenant.id !== id);
|
|
212
222
|
config.apps = config.apps.filter((app) => app.tenantId !== id);
|
|
213
223
|
await routeContext.storage.saveConfig(config);
|
|
@@ -306,13 +316,14 @@ async function updateApp(body) {
|
|
|
306
316
|
}
|
|
307
317
|
await routeContext.storage.saveConfig(config);
|
|
308
318
|
}
|
|
309
|
-
async function deleteApp(id) {
|
|
319
|
+
export async function deleteApp(id) {
|
|
310
320
|
if (!id)
|
|
311
321
|
return;
|
|
312
322
|
const routeContext = getConfigManagerRouteContext();
|
|
313
323
|
const config = await routeContext.storage.loadConfig();
|
|
314
324
|
if (isPreviewApp(config, id))
|
|
315
325
|
return;
|
|
326
|
+
assertNoSourcePreviewGroups(config, "app", id);
|
|
316
327
|
config.apps = config.apps.filter((app) => app.id !== id);
|
|
317
328
|
await routeContext.storage.saveConfig(config);
|
|
318
329
|
}
|