@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.
@@ -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
- kind: row.kind ?? 'manifest',
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
- manifestJson: row.manifest_json,
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 → environment-provider bindings over Postgres (migration 0008). */
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 getByWorkspace(workspaceId) {
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
- // A workspace has a single live provider: clear any prior binding (live or
32
- // tombstoned) before inserting, so re-registering a different provider can't
33
- // collide on the (workspace_id, provider_id) primary key. Delete + insert run in
34
- // one transaction so a concurrent reader never sees the binding transiently absent.
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
- kind: record.kind,
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
- manifest_json: record.manifestJson,
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":"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"}
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;