@cat-factory/node-server 0.45.0 → 0.46.1
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/db/schema.d.ts +62 -2
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +16 -9
- package/dist/db/schema.js.map +1 -1
- package/dist/repositories/environments.d.ts +4 -3
- package/dist/repositories/environments.d.ts.map +1 -1
- package/dist/repositories/environments.js +30 -14
- package/dist/repositories/environments.js.map +1 -1
- package/drizzle/20260630140000_reshape_environment_connections/migration.sql +24 -0
- package/drizzle/20260630140000_reshape_environment_connections/snapshot.json +13246 -0
- package/package.json +19 -19
|
@@ -1,59 +1,75 @@
|
|
|
1
|
-
import { and, desc, eq, isNotNull, isNull, lte } from 'drizzle-orm';
|
|
1
|
+
import { and, asc, desc, eq, isNotNull, isNull, lte } from 'drizzle-orm';
|
|
2
2
|
import { environmentConnections, environments } from '../db/schema.js';
|
|
3
3
|
function rowToConnection(row) {
|
|
4
4
|
return {
|
|
5
5
|
workspaceId: row.workspace_id,
|
|
6
|
-
|
|
6
|
+
provisionType: row.provision_type,
|
|
7
|
+
manifestId: row.manifest_id === '' ? null : row.manifest_id,
|
|
8
|
+
engine: row.engine,
|
|
9
|
+
backendKind: row.backend_kind,
|
|
7
10
|
providerId: row.provider_id,
|
|
8
11
|
label: row.label,
|
|
9
12
|
baseUrl: row.base_url,
|
|
10
|
-
|
|
13
|
+
handlerJson: row.handler_json,
|
|
14
|
+
acceptsManifestId: row.accepts_manifest_id,
|
|
11
15
|
secretsCipher: row.secrets_cipher,
|
|
12
16
|
createdAt: row.created_at,
|
|
13
17
|
deletedAt: row.deleted_at,
|
|
14
18
|
};
|
|
15
19
|
}
|
|
16
|
-
/** Workspace →
|
|
20
|
+
/** Workspace → per-type environment handler bindings over Postgres (migration 0025). */
|
|
17
21
|
export class DrizzleEnvironmentConnectionRepository {
|
|
18
22
|
db;
|
|
19
23
|
constructor(db) {
|
|
20
24
|
this.db = db;
|
|
21
25
|
}
|
|
22
|
-
async
|
|
26
|
+
async listByWorkspace(workspaceId) {
|
|
23
27
|
const rows = await this.db
|
|
24
28
|
.select()
|
|
25
29
|
.from(environmentConnections)
|
|
26
30
|
.where(and(eq(environmentConnections.workspace_id, workspaceId), isNull(environmentConnections.deleted_at)))
|
|
31
|
+
.orderBy(asc(environmentConnections.created_at));
|
|
32
|
+
return rows.map(rowToConnection);
|
|
33
|
+
}
|
|
34
|
+
async getByWorkspaceAndType(workspaceId, provisionType, manifestId) {
|
|
35
|
+
const rows = await this.db
|
|
36
|
+
.select()
|
|
37
|
+
.from(environmentConnections)
|
|
38
|
+
.where(and(eq(environmentConnections.workspace_id, workspaceId), eq(environmentConnections.provision_type, provisionType), eq(environmentConnections.manifest_id, manifestId ?? ''), isNull(environmentConnections.deleted_at)))
|
|
27
39
|
.limit(1);
|
|
28
40
|
return rows[0] ? rowToConnection(rows[0]) : null;
|
|
29
41
|
}
|
|
30
42
|
async upsert(record) {
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
//
|
|
43
|
+
// Clear any prior row (live or tombstoned) on the same composite key first, so a
|
|
44
|
+
// re-register that changes the engine/provider can't collide on the primary key.
|
|
45
|
+
// Delete + insert run in one transaction so a concurrent reader never sees the
|
|
46
|
+
// binding transiently absent.
|
|
35
47
|
await this.db.transaction(async (tx) => {
|
|
36
48
|
await tx
|
|
37
49
|
.delete(environmentConnections)
|
|
38
|
-
.where(eq(environmentConnections.workspace_id, record.workspaceId));
|
|
50
|
+
.where(and(eq(environmentConnections.workspace_id, record.workspaceId), eq(environmentConnections.provision_type, record.provisionType), eq(environmentConnections.manifest_id, record.manifestId ?? '')));
|
|
39
51
|
await tx.insert(environmentConnections).values({
|
|
40
52
|
workspace_id: record.workspaceId,
|
|
41
|
-
|
|
53
|
+
provision_type: record.provisionType,
|
|
54
|
+
manifest_id: record.manifestId ?? '',
|
|
55
|
+
engine: record.engine,
|
|
56
|
+
backend_kind: record.backendKind,
|
|
42
57
|
provider_id: record.providerId,
|
|
43
58
|
label: record.label,
|
|
44
59
|
base_url: record.baseUrl,
|
|
45
|
-
|
|
60
|
+
handler_json: record.handlerJson,
|
|
61
|
+
accepts_manifest_id: record.acceptsManifestId,
|
|
46
62
|
secrets_cipher: record.secretsCipher,
|
|
47
63
|
created_at: record.createdAt,
|
|
48
64
|
deleted_at: null,
|
|
49
65
|
});
|
|
50
66
|
});
|
|
51
67
|
}
|
|
52
|
-
async softDelete(workspaceId, at) {
|
|
68
|
+
async softDelete(workspaceId, provisionType, manifestId, at) {
|
|
53
69
|
await this.db
|
|
54
70
|
.update(environmentConnections)
|
|
55
71
|
.set({ deleted_at: at })
|
|
56
|
-
.where(and(eq(environmentConnections.workspace_id, workspaceId), isNull(environmentConnections.deleted_at)));
|
|
72
|
+
.where(and(eq(environmentConnections.workspace_id, workspaceId), eq(environmentConnections.provision_type, provisionType), eq(environmentConnections.manifest_id, manifestId ?? ''), isNull(environmentConnections.deleted_at)));
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
75
|
function rowToEnvironment(row) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/repositories/environments.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"environments.js","sourceRoot":"","sources":["../../src/repositories/environments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- Per-service provision type + per-type infra handlers (slice 2b, breaking). Reshape
|
|
2
|
+
-- environment_connections from a single per-workspace provider binding into a multi-row
|
|
3
|
+
-- per-provision-type handler table keyed by (workspace_id, provision_type, manifest_id).
|
|
4
|
+
-- Backwards compatibility is NOT a goal (CLAUDE.md): clean DROP/CREATE, stale rows dropped.
|
|
5
|
+
DROP TABLE IF EXISTS "environment_connections" CASCADE;
|
|
6
|
+
--> statement-breakpoint
|
|
7
|
+
CREATE TABLE "environment_connections" (
|
|
8
|
+
"workspace_id" text,
|
|
9
|
+
"provision_type" text,
|
|
10
|
+
"manifest_id" text DEFAULT '',
|
|
11
|
+
"engine" text NOT NULL,
|
|
12
|
+
"backend_kind" text NOT NULL,
|
|
13
|
+
"provider_id" text NOT NULL,
|
|
14
|
+
"label" text NOT NULL,
|
|
15
|
+
"base_url" text NOT NULL,
|
|
16
|
+
"handler_json" text NOT NULL,
|
|
17
|
+
"accepts_manifest_id" text,
|
|
18
|
+
"secrets_cipher" text NOT NULL,
|
|
19
|
+
"created_at" bigint NOT NULL,
|
|
20
|
+
"deleted_at" bigint,
|
|
21
|
+
CONSTRAINT "environment_connections_pkey" PRIMARY KEY("workspace_id","provision_type","manifest_id")
|
|
22
|
+
);
|
|
23
|
+
--> statement-breakpoint
|
|
24
|
+
CREATE INDEX "idx_environment_conn_workspace" ON "environment_connections" ("workspace_id") WHERE "deleted_at" IS NULL;
|