@penclipai/db 2026.522.0 → 2026.530.0-canary.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/embedded-postgres-native.d.ts +3 -0
- package/dist/embedded-postgres-native.d.ts.map +1 -0
- package/dist/embedded-postgres-native.js +83 -0
- package/dist/embedded-postgres-native.js.map +1 -0
- package/dist/embedded-postgres-native.test.d.ts +2 -0
- package/dist/embedded-postgres-native.test.d.ts.map +1 -0
- package/dist/embedded-postgres-native.test.js +36 -0
- package/dist/embedded-postgres-native.test.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/migrations/0087_backfill_environment_manage_human_defaults.sql +29 -0
- package/dist/migrations/0088_backfill_principal_access_compatibility.sql +75 -0
- package/dist/migrations/0089_cloud_upstreams.sql +71 -0
- package/dist/migrations/0090_resource_memberships.sql +55 -0
- package/dist/migrations/0091_old_swarm.sql +189 -0
- package/dist/migrations/0092_mighty_puma.sql +28 -0
- package/dist/migrations/0093_giant_green_goblin.sql +6 -0
- package/dist/migrations/meta/0090_snapshot.json +17974 -0
- package/dist/migrations/meta/0091_snapshot.json +18843 -0
- package/dist/migrations/meta/0092_snapshot.json +19543 -0
- package/dist/migrations/meta/0093_snapshot.json +19543 -0
- package/dist/migrations/meta/_journal.json +50 -1
- package/dist/schema/agent_memberships.d.ts +127 -0
- package/dist/schema/agent_memberships.d.ts.map +1 -0
- package/dist/schema/agent_memberships.js +17 -0
- package/dist/schema/agent_memberships.js.map +1 -0
- package/dist/schema/cloud_upstreams.d.ts +884 -0
- package/dist/schema/cloud_upstreams.d.ts.map +1 -0
- package/dist/schema/cloud_upstreams.js +63 -0
- package/dist/schema/cloud_upstreams.js.map +1 -0
- package/dist/schema/document_annotation_anchor_snapshots.d.ts +255 -0
- package/dist/schema/document_annotation_anchor_snapshots.d.ts.map +1 -0
- package/dist/schema/document_annotation_anchor_snapshots.js +25 -0
- package/dist/schema/document_annotation_anchor_snapshots.js.map +1 -0
- package/dist/schema/document_annotation_comments.d.ts +214 -0
- package/dist/schema/document_annotation_comments.d.ts.map +1 -0
- package/dist/schema/document_annotation_comments.js +27 -0
- package/dist/schema/document_annotation_comments.js.map +1 -0
- package/dist/schema/document_annotation_threads.d.ts +476 -0
- package/dist/schema/document_annotation_threads.d.ts.map +1 -0
- package/dist/schema/document_annotation_threads.js +44 -0
- package/dist/schema/document_annotation_threads.js.map +1 -0
- package/dist/schema/execution_workspaces.js +1 -1
- package/dist/schema/execution_workspaces.js.map +1 -1
- package/dist/schema/index.d.ts +7 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +7 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/issue_plan_decompositions.d.ts +284 -0
- package/dist/schema/issue_plan_decompositions.d.ts.map +1 -0
- package/dist/schema/issue_plan_decompositions.js +36 -0
- package/dist/schema/issue_plan_decompositions.js.map +1 -0
- package/dist/schema/plugin_jobs.d.ts +2 -2
- package/dist/schema/project_memberships.d.ts +127 -0
- package/dist/schema/project_memberships.d.ts.map +1 -0
- package/dist/schema/project_memberships.js +17 -0
- package/dist/schema/project_memberships.js.map +1 -0
- package/dist/schema/workspace_operations.js +1 -1
- package/dist/schema/workspace_operations.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded-postgres-native.d.ts","sourceRoot":"","sources":["../src/embedded-postgres-native.ts"],"names":[],"mappings":"AAkDA,wBAAsB,+BAA+B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBvF;AAED,wBAAsB,oCAAoC,IAAI,OAAO,CAAC,IAAI,CAAC,CAW1E"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
function resolveNativePackageName() {
|
|
6
|
+
if (process.platform !== "linux")
|
|
7
|
+
return null;
|
|
8
|
+
switch (process.arch) {
|
|
9
|
+
case "arm64":
|
|
10
|
+
return "linux-arm64";
|
|
11
|
+
case "arm":
|
|
12
|
+
return "linux-arm";
|
|
13
|
+
case "ia32":
|
|
14
|
+
return "linux-ia32";
|
|
15
|
+
case "ppc64":
|
|
16
|
+
return "linux-ppc64";
|
|
17
|
+
case "x64":
|
|
18
|
+
return "linux-x64";
|
|
19
|
+
default:
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function pathExists(value) {
|
|
24
|
+
try {
|
|
25
|
+
await fs.stat(value);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function resolveEmbeddedPostgresPackageRoot() {
|
|
33
|
+
try {
|
|
34
|
+
const entry = require.resolve("embedded-postgres");
|
|
35
|
+
return path.dirname(path.dirname(entry));
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function prependPathEnv(name, value) {
|
|
42
|
+
const current = process.env[name] ?? "";
|
|
43
|
+
const parts = current.split(path.delimiter).filter(Boolean);
|
|
44
|
+
if (parts.includes(value))
|
|
45
|
+
return;
|
|
46
|
+
process.env[name] = [value, ...parts].join(path.delimiter);
|
|
47
|
+
}
|
|
48
|
+
export async function ensureLinuxSharedLibraryAliases(libDir) {
|
|
49
|
+
const entries = await fs.readdir(libDir, { withFileTypes: true });
|
|
50
|
+
const created = [];
|
|
51
|
+
for (const entry of entries) {
|
|
52
|
+
if (!entry.isFile())
|
|
53
|
+
continue;
|
|
54
|
+
const match = entry.name.match(/^(lib.+\.so\.\d+)\.\d+(?:\.\d+)?$/);
|
|
55
|
+
if (!match)
|
|
56
|
+
continue;
|
|
57
|
+
const aliasName = match[1];
|
|
58
|
+
const aliasPath = path.join(libDir, aliasName);
|
|
59
|
+
try {
|
|
60
|
+
await fs.symlink(entry.name, aliasPath);
|
|
61
|
+
created.push(aliasPath);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error.code === "EEXIST")
|
|
65
|
+
continue;
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return created;
|
|
70
|
+
}
|
|
71
|
+
export async function prepareEmbeddedPostgresNativeRuntime() {
|
|
72
|
+
const nativePackageName = resolveNativePackageName();
|
|
73
|
+
const packageRoot = resolveEmbeddedPostgresPackageRoot();
|
|
74
|
+
if (!nativePackageName || !packageRoot)
|
|
75
|
+
return;
|
|
76
|
+
const nativeRoot = path.resolve(packageRoot, "..", "@embedded-postgres", nativePackageName);
|
|
77
|
+
const libDir = path.join(nativeRoot, "native", "lib");
|
|
78
|
+
if (!(await pathExists(libDir)))
|
|
79
|
+
return;
|
|
80
|
+
prependPathEnv("LD_LIBRARY_PATH", libDir);
|
|
81
|
+
await ensureLinuxSharedLibraryAliases(libDir);
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=embedded-postgres-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded-postgres-native.js","sourceRoot":"","sources":["../src/embedded-postgres-native.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded-postgres-native.test.d.ts","sourceRoot":"","sources":["../src/embedded-postgres-native.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { ensureLinuxSharedLibraryAliases } from "./embedded-postgres-native.js";
|
|
6
|
+
describe("embedded Postgres native runtime", () => {
|
|
7
|
+
const tempDirs = [];
|
|
8
|
+
afterEach(() => {
|
|
9
|
+
for (const tempDir of tempDirs.splice(0)) {
|
|
10
|
+
fs.rmSync(tempDir, { recursive: true, force: true });
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
it.runIf(process.platform !== "win32")("creates soname aliases for bundled patch-level shared libraries", async () => {
|
|
14
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "paperclip-embedded-pg-libs-"));
|
|
15
|
+
tempDirs.push(tempDir);
|
|
16
|
+
fs.writeFileSync(path.join(tempDir, "libicuuc.so.60.2"), "");
|
|
17
|
+
fs.writeFileSync(path.join(tempDir, "libicui18n.so.60.2"), "");
|
|
18
|
+
fs.writeFileSync(path.join(tempDir, "README.md"), "");
|
|
19
|
+
const created = await ensureLinuxSharedLibraryAliases(tempDir);
|
|
20
|
+
expect(created.map((file) => path.basename(file)).sort()).toEqual([
|
|
21
|
+
"libicui18n.so.60",
|
|
22
|
+
"libicuuc.so.60",
|
|
23
|
+
]);
|
|
24
|
+
expect(fs.readlinkSync(path.join(tempDir, "libicuuc.so.60"))).toBe("libicuuc.so.60.2");
|
|
25
|
+
});
|
|
26
|
+
it.runIf(process.platform !== "win32")("is idempotent when aliases already exist", async () => {
|
|
27
|
+
const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "paperclip-embedded-pg-libs-"));
|
|
28
|
+
tempDirs.push(tempDir);
|
|
29
|
+
fs.writeFileSync(path.join(tempDir, "libicuuc.so.60.2"), "");
|
|
30
|
+
await ensureLinuxSharedLibraryAliases(tempDir);
|
|
31
|
+
const second = await ensureLinuxSharedLibraryAliases(tempDir);
|
|
32
|
+
expect(second).toEqual([]);
|
|
33
|
+
expect(fs.readlinkSync(path.join(tempDir, "libicuuc.so.60"))).toBe("libicuuc.so.60.2");
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=embedded-postgres-native.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedded-postgres-native.test.js","sourceRoot":"","sources":["../src/embedded-postgres-native.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QACnH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC;QACtF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/D,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAEtD,MAAM,OAAO,GAAG,MAAM,+BAA+B,CAAC,OAAO,CAAC,CAAC;QAE/D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;YAChE,kBAAkB;YAClB,gBAAgB;SACjB,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC5F,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,6BAA6B,CAAC,CAAC,CAAC;QACtF,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;QAE7D,MAAM,+BAA+B,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,+BAA+B,CAAC,OAAO,CAAC,CAAC;QAE9D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ export { createDb, getPostgresDataDirectory, ensurePostgresDatabase, inspectMigr
|
|
|
2
2
|
export { getEmbeddedPostgresTestSupport, startEmbeddedPostgresTestDatabase, type EmbeddedPostgresTestDatabase, type EmbeddedPostgresTestSupport, } from "./test-embedded-postgres.js";
|
|
3
3
|
export { runDatabaseBackup, runDatabaseRestore, formatDatabaseBackupResult, type BackupRetentionPolicy, type RunDatabaseBackupOptions, type RunDatabaseBackupResult, type RunDatabaseRestoreOptions, } from "./backup-lib.js";
|
|
4
4
|
export { createEmbeddedPostgresLogBuffer, formatEmbeddedPostgresError, } from "./embedded-postgres-error.js";
|
|
5
|
+
export { ensureLinuxSharedLibraryAliases, prepareEmbeddedPostgresNativeRuntime, } from "./embedded-postgres-native.js";
|
|
5
6
|
export { cleanupOrphanedEmbeddedPostgresForkchildren, recoverEmbeddedPostgresStart, resetIncompleteEmbeddedPostgresDataDir, shouldRetryEmbeddedPostgresStart, } from "./embedded-postgres-recovery.js";
|
|
7
|
+
export { startManagedEmbeddedPostgres, } from "./embedded-postgres-manager.js";
|
|
6
8
|
export { issueRelations } from "./schema/issue_relations.js";
|
|
7
9
|
export { issueReferenceMentions } from "./schema/issue_reference_mentions.js";
|
|
8
10
|
export * from "./schema/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,EAChC,KAAK,cAAc,EACnB,KAAK,+BAA+B,EACpC,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,EAAE,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,2CAA2C,EAC3C,4BAA4B,EAC5B,sCAAsC,EACtC,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,EAChC,KAAK,cAAc,EACnB,KAAK,+BAA+B,EACpC,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,EAAE,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,EACjC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,GACjC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,2CAA2C,EAC3C,4BAA4B,EAC5B,sCAAsC,EACtC,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,9 @@ export { createDb, getPostgresDataDirectory, ensurePostgresDatabase, inspectMigr
|
|
|
2
2
|
export { getEmbeddedPostgresTestSupport, startEmbeddedPostgresTestDatabase, } from "./test-embedded-postgres.js";
|
|
3
3
|
export { runDatabaseBackup, runDatabaseRestore, formatDatabaseBackupResult, } from "./backup-lib.js";
|
|
4
4
|
export { createEmbeddedPostgresLogBuffer, formatEmbeddedPostgresError, } from "./embedded-postgres-error.js";
|
|
5
|
+
export { ensureLinuxSharedLibraryAliases, prepareEmbeddedPostgresNativeRuntime, } from "./embedded-postgres-native.js";
|
|
5
6
|
export { cleanupOrphanedEmbeddedPostgresForkchildren, recoverEmbeddedPostgresStart, resetIncompleteEmbeddedPostgresDataDir, shouldRetryEmbeddedPostgresStart, } from "./embedded-postgres-recovery.js";
|
|
7
|
+
export { startManagedEmbeddedPostgres, } from "./embedded-postgres-manager.js";
|
|
6
8
|
export { issueRelations } from "./schema/issue_relations.js";
|
|
7
9
|
export { issueReferenceMentions } from "./schema/issue_reference_mentions.js";
|
|
8
10
|
export * from "./schema/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,EAGhC,sBAAsB,GAGvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,GAGlC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAK3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,2CAA2C,EAC3C,4BAA4B,EAC5B,sCAAsC,EACtC,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,gCAAgC,EAGhC,sBAAsB,GAGvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,8BAA8B,EAC9B,iCAAiC,GAGlC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,0BAA0B,GAK3B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,+BAA+B,EAC/B,oCAAoC,GACrC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,2CAA2C,EAC3C,4BAA4B,EAC5B,sCAAsC,EACtC,gCAAgC,GACjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,4BAA4B,GAC7B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
INSERT INTO "principal_permission_grants" (
|
|
2
|
+
"company_id",
|
|
3
|
+
"principal_type",
|
|
4
|
+
"principal_id",
|
|
5
|
+
"permission_key",
|
|
6
|
+
"scope",
|
|
7
|
+
"granted_by_user_id",
|
|
8
|
+
"created_at",
|
|
9
|
+
"updated_at"
|
|
10
|
+
)
|
|
11
|
+
SELECT
|
|
12
|
+
"company_id",
|
|
13
|
+
'user',
|
|
14
|
+
"principal_id",
|
|
15
|
+
'environments:manage',
|
|
16
|
+
NULL,
|
|
17
|
+
NULL,
|
|
18
|
+
now(),
|
|
19
|
+
now()
|
|
20
|
+
FROM "company_memberships"
|
|
21
|
+
WHERE "principal_type" = 'user'
|
|
22
|
+
AND "status" = 'active'
|
|
23
|
+
AND "membership_role" IN ('owner', 'admin')
|
|
24
|
+
ON CONFLICT (
|
|
25
|
+
"company_id",
|
|
26
|
+
"principal_type",
|
|
27
|
+
"principal_id",
|
|
28
|
+
"permission_key"
|
|
29
|
+
) DO NOTHING;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
INSERT INTO "company_memberships" (
|
|
2
|
+
"company_id",
|
|
3
|
+
"principal_type",
|
|
4
|
+
"principal_id",
|
|
5
|
+
"status",
|
|
6
|
+
"membership_role",
|
|
7
|
+
"created_at",
|
|
8
|
+
"updated_at"
|
|
9
|
+
)
|
|
10
|
+
SELECT
|
|
11
|
+
"company_id",
|
|
12
|
+
'agent',
|
|
13
|
+
"id",
|
|
14
|
+
'active',
|
|
15
|
+
'member',
|
|
16
|
+
now(),
|
|
17
|
+
now()
|
|
18
|
+
FROM "agents"
|
|
19
|
+
WHERE "status" NOT IN ('pending_approval', 'terminated')
|
|
20
|
+
ON CONFLICT (
|
|
21
|
+
"company_id",
|
|
22
|
+
"principal_type",
|
|
23
|
+
"principal_id"
|
|
24
|
+
) DO NOTHING;
|
|
25
|
+
|
|
26
|
+
INSERT INTO "principal_permission_grants" (
|
|
27
|
+
"company_id",
|
|
28
|
+
"principal_type",
|
|
29
|
+
"principal_id",
|
|
30
|
+
"permission_key",
|
|
31
|
+
"scope",
|
|
32
|
+
"granted_by_user_id",
|
|
33
|
+
"created_at",
|
|
34
|
+
"updated_at"
|
|
35
|
+
)
|
|
36
|
+
SELECT
|
|
37
|
+
memberships."company_id",
|
|
38
|
+
'user',
|
|
39
|
+
memberships."principal_id",
|
|
40
|
+
role_defaults."permission_key",
|
|
41
|
+
NULL,
|
|
42
|
+
NULL,
|
|
43
|
+
now(),
|
|
44
|
+
now()
|
|
45
|
+
FROM "company_memberships" memberships
|
|
46
|
+
JOIN (
|
|
47
|
+
VALUES
|
|
48
|
+
('owner', 'agents:create'),
|
|
49
|
+
('owner', 'environments:manage'),
|
|
50
|
+
('owner', 'users:invite'),
|
|
51
|
+
('owner', 'users:manage_permissions'),
|
|
52
|
+
('owner', 'tasks:assign'),
|
|
53
|
+
('owner', 'joins:approve'),
|
|
54
|
+
('admin', 'agents:create'),
|
|
55
|
+
('admin', 'environments:manage'),
|
|
56
|
+
('admin', 'users:invite'),
|
|
57
|
+
('admin', 'tasks:assign'),
|
|
58
|
+
('admin', 'joins:approve'),
|
|
59
|
+
('operator', 'tasks:assign')
|
|
60
|
+
) AS role_defaults("membership_role", "permission_key")
|
|
61
|
+
ON role_defaults."membership_role" = CASE
|
|
62
|
+
WHEN memberships."membership_role" = 'owner' THEN 'owner'
|
|
63
|
+
WHEN memberships."membership_role" = 'admin' THEN 'admin'
|
|
64
|
+
WHEN memberships."membership_role" = 'viewer' THEN 'viewer'
|
|
65
|
+
WHEN memberships."membership_role" = 'member' THEN 'operator'
|
|
66
|
+
ELSE 'operator'
|
|
67
|
+
END
|
|
68
|
+
WHERE memberships."principal_type" = 'user'
|
|
69
|
+
AND memberships."status" = 'active'
|
|
70
|
+
ON CONFLICT (
|
|
71
|
+
"company_id",
|
|
72
|
+
"principal_type",
|
|
73
|
+
"principal_id",
|
|
74
|
+
"permission_key"
|
|
75
|
+
) DO NOTHING;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS "cloud_upstream_connections" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"company_id" uuid NOT NULL,
|
|
4
|
+
"remote_url" text NOT NULL,
|
|
5
|
+
"source_instance_id" text NOT NULL,
|
|
6
|
+
"source_instance_fingerprint" text NOT NULL,
|
|
7
|
+
"source_public_key" text NOT NULL,
|
|
8
|
+
"private_key_pem" text NOT NULL,
|
|
9
|
+
"token_status" text NOT NULL,
|
|
10
|
+
"scopes" text[] DEFAULT '{}' NOT NULL,
|
|
11
|
+
"authorized_global_user_id" text,
|
|
12
|
+
"access_token" text,
|
|
13
|
+
"token_id" text,
|
|
14
|
+
"token_expires_at" timestamp with time zone,
|
|
15
|
+
"target_stack_id" text NOT NULL,
|
|
16
|
+
"target_stack_slug" text,
|
|
17
|
+
"target_stack_display_name" text,
|
|
18
|
+
"target_company_id" text NOT NULL,
|
|
19
|
+
"target_origin" text NOT NULL,
|
|
20
|
+
"target_primary_host" text NOT NULL,
|
|
21
|
+
"target_product" text NOT NULL,
|
|
22
|
+
"target_schema_major" integer NOT NULL,
|
|
23
|
+
"target_max_chunk_bytes" integer NOT NULL,
|
|
24
|
+
"pending_state" text,
|
|
25
|
+
"pending_code_verifier" text,
|
|
26
|
+
"pending_redirect_uri" text,
|
|
27
|
+
"pending_token_url" text,
|
|
28
|
+
"last_run_id" uuid,
|
|
29
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
30
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
31
|
+
);--> statement-breakpoint
|
|
32
|
+
CREATE TABLE IF NOT EXISTS "cloud_upstream_runs" (
|
|
33
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
34
|
+
"connection_id" uuid NOT NULL,
|
|
35
|
+
"company_id" uuid NOT NULL,
|
|
36
|
+
"remote_run_id" text,
|
|
37
|
+
"status" text NOT NULL,
|
|
38
|
+
"active_step" text NOT NULL,
|
|
39
|
+
"progress_percent" integer DEFAULT 0 NOT NULL,
|
|
40
|
+
"dry_run" boolean DEFAULT false NOT NULL,
|
|
41
|
+
"retry_of_run_id" uuid,
|
|
42
|
+
"summary" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
43
|
+
"warnings" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
44
|
+
"conflicts" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
45
|
+
"events" jsonb DEFAULT '[]'::jsonb NOT NULL,
|
|
46
|
+
"report" jsonb DEFAULT '{}'::jsonb NOT NULL,
|
|
47
|
+
"idempotency_key" text NOT NULL,
|
|
48
|
+
"manifest_hash" text NOT NULL,
|
|
49
|
+
"target_url" text,
|
|
50
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
51
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
52
|
+
"completed_at" timestamp with time zone
|
|
53
|
+
);--> statement-breakpoint
|
|
54
|
+
DO $$ BEGIN
|
|
55
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cloud_upstream_connections_company_id_companies_id_fk') THEN
|
|
56
|
+
ALTER TABLE "cloud_upstream_connections" ADD CONSTRAINT "cloud_upstream_connections_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
|
|
57
|
+
END IF;
|
|
58
|
+
END $$;--> statement-breakpoint
|
|
59
|
+
DO $$ BEGIN
|
|
60
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cloud_upstream_runs_connection_id_cloud_upstream_connections_id_fk') THEN
|
|
61
|
+
ALTER TABLE "cloud_upstream_runs" ADD CONSTRAINT "cloud_upstream_runs_connection_id_cloud_upstream_connections_id_fk" FOREIGN KEY ("connection_id") REFERENCES "public"."cloud_upstream_connections"("id") ON DELETE cascade ON UPDATE no action;
|
|
62
|
+
END IF;
|
|
63
|
+
END $$;--> statement-breakpoint
|
|
64
|
+
DO $$ BEGIN
|
|
65
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'cloud_upstream_runs_company_id_companies_id_fk') THEN
|
|
66
|
+
ALTER TABLE "cloud_upstream_runs" ADD CONSTRAINT "cloud_upstream_runs_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
|
|
67
|
+
END IF;
|
|
68
|
+
END $$;--> statement-breakpoint
|
|
69
|
+
CREATE INDEX IF NOT EXISTS "cloud_upstream_connections_company_idx" ON "cloud_upstream_connections" USING btree ("company_id");--> statement-breakpoint
|
|
70
|
+
CREATE INDEX IF NOT EXISTS "cloud_upstream_runs_company_created_idx" ON "cloud_upstream_runs" USING btree ("company_id","created_at");--> statement-breakpoint
|
|
71
|
+
CREATE INDEX IF NOT EXISTS "cloud_upstream_runs_connection_idx" ON "cloud_upstream_runs" USING btree ("connection_id");
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS "agent_memberships" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"company_id" uuid NOT NULL,
|
|
4
|
+
"agent_id" uuid NOT NULL,
|
|
5
|
+
"user_id" text NOT NULL,
|
|
6
|
+
"state" text DEFAULT 'joined' NOT NULL,
|
|
7
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
8
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
9
|
+
);
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
CREATE TABLE IF NOT EXISTS "project_memberships" (
|
|
12
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
13
|
+
"company_id" uuid NOT NULL,
|
|
14
|
+
"project_id" uuid NOT NULL,
|
|
15
|
+
"user_id" text NOT NULL,
|
|
16
|
+
"state" text DEFAULT 'joined' NOT NULL,
|
|
17
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
18
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
19
|
+
);
|
|
20
|
+
--> statement-breakpoint
|
|
21
|
+
DO $$ BEGIN
|
|
22
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'agent_memberships_company_id_companies_id_fk') THEN
|
|
23
|
+
ALTER TABLE "agent_memberships" ADD CONSTRAINT "agent_memberships_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
|
|
24
|
+
END IF;
|
|
25
|
+
END $$;
|
|
26
|
+
--> statement-breakpoint
|
|
27
|
+
DO $$ BEGIN
|
|
28
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'agent_memberships_agent_id_agents_id_fk') THEN
|
|
29
|
+
ALTER TABLE "agent_memberships" ADD CONSTRAINT "agent_memberships_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE cascade ON UPDATE no action;
|
|
30
|
+
END IF;
|
|
31
|
+
END $$;
|
|
32
|
+
--> statement-breakpoint
|
|
33
|
+
DO $$ BEGIN
|
|
34
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'project_memberships_company_id_companies_id_fk') THEN
|
|
35
|
+
ALTER TABLE "project_memberships" ADD CONSTRAINT "project_memberships_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
|
|
36
|
+
END IF;
|
|
37
|
+
END $$;
|
|
38
|
+
--> statement-breakpoint
|
|
39
|
+
DO $$ BEGIN
|
|
40
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'project_memberships_project_id_projects_id_fk') THEN
|
|
41
|
+
ALTER TABLE "project_memberships" ADD CONSTRAINT "project_memberships_project_id_projects_id_fk" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE cascade ON UPDATE no action;
|
|
42
|
+
END IF;
|
|
43
|
+
END $$;
|
|
44
|
+
--> statement-breakpoint
|
|
45
|
+
CREATE INDEX IF NOT EXISTS "agent_memberships_company_user_idx" ON "agent_memberships" USING btree ("company_id","user_id");
|
|
46
|
+
--> statement-breakpoint
|
|
47
|
+
CREATE INDEX IF NOT EXISTS "agent_memberships_agent_idx" ON "agent_memberships" USING btree ("agent_id");
|
|
48
|
+
--> statement-breakpoint
|
|
49
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "agent_memberships_company_user_agent_uq" ON "agent_memberships" USING btree ("company_id","user_id","agent_id");
|
|
50
|
+
--> statement-breakpoint
|
|
51
|
+
CREATE INDEX IF NOT EXISTS "project_memberships_company_user_idx" ON "project_memberships" USING btree ("company_id","user_id");
|
|
52
|
+
--> statement-breakpoint
|
|
53
|
+
CREATE INDEX IF NOT EXISTS "project_memberships_project_idx" ON "project_memberships" USING btree ("project_id");
|
|
54
|
+
--> statement-breakpoint
|
|
55
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "project_memberships_company_user_project_uq" ON "project_memberships" USING btree ("company_id","user_id","project_id");
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
CREATE TABLE IF NOT EXISTS "document_annotation_threads" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"company_id" uuid NOT NULL,
|
|
4
|
+
"issue_id" uuid NOT NULL,
|
|
5
|
+
"document_id" uuid NOT NULL,
|
|
6
|
+
"document_key" text NOT NULL,
|
|
7
|
+
"status" text DEFAULT 'open' NOT NULL,
|
|
8
|
+
"anchor_state" text DEFAULT 'active' NOT NULL,
|
|
9
|
+
"original_revision_id" uuid,
|
|
10
|
+
"original_revision_number" integer NOT NULL,
|
|
11
|
+
"current_revision_id" uuid,
|
|
12
|
+
"current_revision_number" integer NOT NULL,
|
|
13
|
+
"selected_text" text NOT NULL,
|
|
14
|
+
"prefix_text" text DEFAULT '' NOT NULL,
|
|
15
|
+
"suffix_text" text DEFAULT '' NOT NULL,
|
|
16
|
+
"normalized_start" integer NOT NULL,
|
|
17
|
+
"normalized_end" integer NOT NULL,
|
|
18
|
+
"markdown_start" integer NOT NULL,
|
|
19
|
+
"markdown_end" integer NOT NULL,
|
|
20
|
+
"anchor_confidence" text DEFAULT 'exact' NOT NULL,
|
|
21
|
+
"anchor_selector" jsonb NOT NULL,
|
|
22
|
+
"created_by_agent_id" uuid,
|
|
23
|
+
"created_by_user_id" text,
|
|
24
|
+
"resolved_by_agent_id" uuid,
|
|
25
|
+
"resolved_by_user_id" text,
|
|
26
|
+
"resolved_at" timestamp with time zone,
|
|
27
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
28
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
29
|
+
);
|
|
30
|
+
--> statement-breakpoint
|
|
31
|
+
CREATE TABLE IF NOT EXISTS "document_annotation_comments" (
|
|
32
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
33
|
+
"company_id" uuid NOT NULL,
|
|
34
|
+
"thread_id" uuid NOT NULL,
|
|
35
|
+
"issue_id" uuid NOT NULL,
|
|
36
|
+
"document_id" uuid NOT NULL,
|
|
37
|
+
"body" text NOT NULL,
|
|
38
|
+
"author_type" text NOT NULL,
|
|
39
|
+
"author_agent_id" uuid,
|
|
40
|
+
"author_user_id" text,
|
|
41
|
+
"created_by_run_id" uuid,
|
|
42
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
43
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
44
|
+
);
|
|
45
|
+
--> statement-breakpoint
|
|
46
|
+
CREATE TABLE IF NOT EXISTS "document_annotation_anchor_snapshots" (
|
|
47
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
48
|
+
"company_id" uuid NOT NULL,
|
|
49
|
+
"thread_id" uuid NOT NULL,
|
|
50
|
+
"document_id" uuid NOT NULL,
|
|
51
|
+
"from_revision_id" uuid,
|
|
52
|
+
"from_revision_number" integer,
|
|
53
|
+
"to_revision_id" uuid,
|
|
54
|
+
"to_revision_number" integer NOT NULL,
|
|
55
|
+
"previous_anchor" jsonb NOT NULL,
|
|
56
|
+
"next_anchor" jsonb,
|
|
57
|
+
"anchor_state" text NOT NULL,
|
|
58
|
+
"anchor_confidence" text NOT NULL,
|
|
59
|
+
"failure_reason" text,
|
|
60
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
61
|
+
);
|
|
62
|
+
--> statement-breakpoint
|
|
63
|
+
DO $$ BEGIN
|
|
64
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_threads_company_id_companies_id_fk') THEN
|
|
65
|
+
ALTER TABLE "document_annotation_threads" ADD CONSTRAINT "document_annotation_threads_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;
|
|
66
|
+
END IF;
|
|
67
|
+
END $$;
|
|
68
|
+
--> statement-breakpoint
|
|
69
|
+
DO $$ BEGIN
|
|
70
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_threads_issue_id_issues_id_fk') THEN
|
|
71
|
+
ALTER TABLE "document_annotation_threads" ADD CONSTRAINT "document_annotation_threads_issue_id_issues_id_fk" FOREIGN KEY ("issue_id") REFERENCES "public"."issues"("id") ON DELETE cascade ON UPDATE no action;
|
|
72
|
+
END IF;
|
|
73
|
+
END $$;
|
|
74
|
+
--> statement-breakpoint
|
|
75
|
+
DO $$ BEGIN
|
|
76
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_threads_document_id_documents_id_fk') THEN
|
|
77
|
+
ALTER TABLE "document_annotation_threads" ADD CONSTRAINT "document_annotation_threads_document_id_documents_id_fk" FOREIGN KEY ("document_id") REFERENCES "public"."documents"("id") ON DELETE cascade ON UPDATE no action;
|
|
78
|
+
END IF;
|
|
79
|
+
END $$;
|
|
80
|
+
--> statement-breakpoint
|
|
81
|
+
DO $$ BEGIN
|
|
82
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_threads_original_revision_id_document_revisions_id_fk') THEN
|
|
83
|
+
ALTER TABLE "document_annotation_threads" ADD CONSTRAINT "document_annotation_threads_original_revision_id_document_revisions_id_fk" FOREIGN KEY ("original_revision_id") REFERENCES "public"."document_revisions"("id") ON DELETE set null ON UPDATE no action;
|
|
84
|
+
END IF;
|
|
85
|
+
END $$;
|
|
86
|
+
--> statement-breakpoint
|
|
87
|
+
DO $$ BEGIN
|
|
88
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_threads_current_revision_id_document_revisions_id_fk') THEN
|
|
89
|
+
ALTER TABLE "document_annotation_threads" ADD CONSTRAINT "document_annotation_threads_current_revision_id_document_revisions_id_fk" FOREIGN KEY ("current_revision_id") REFERENCES "public"."document_revisions"("id") ON DELETE set null ON UPDATE no action;
|
|
90
|
+
END IF;
|
|
91
|
+
END $$;
|
|
92
|
+
--> statement-breakpoint
|
|
93
|
+
DO $$ BEGIN
|
|
94
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_threads_created_by_agent_id_agents_id_fk') THEN
|
|
95
|
+
ALTER TABLE "document_annotation_threads" ADD CONSTRAINT "document_annotation_threads_created_by_agent_id_agents_id_fk" FOREIGN KEY ("created_by_agent_id") REFERENCES "public"."agents"("id") ON DELETE set null ON UPDATE no action;
|
|
96
|
+
END IF;
|
|
97
|
+
END $$;
|
|
98
|
+
--> statement-breakpoint
|
|
99
|
+
DO $$ BEGIN
|
|
100
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_threads_resolved_by_agent_id_agents_id_fk') THEN
|
|
101
|
+
ALTER TABLE "document_annotation_threads" ADD CONSTRAINT "document_annotation_threads_resolved_by_agent_id_agents_id_fk" FOREIGN KEY ("resolved_by_agent_id") REFERENCES "public"."agents"("id") ON DELETE set null ON UPDATE no action;
|
|
102
|
+
END IF;
|
|
103
|
+
END $$;
|
|
104
|
+
--> statement-breakpoint
|
|
105
|
+
DO $$ BEGIN
|
|
106
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_comments_company_id_companies_id_fk') THEN
|
|
107
|
+
ALTER TABLE "document_annotation_comments" ADD CONSTRAINT "document_annotation_comments_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;
|
|
108
|
+
END IF;
|
|
109
|
+
END $$;
|
|
110
|
+
--> statement-breakpoint
|
|
111
|
+
DO $$ BEGIN
|
|
112
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_comments_thread_id_document_annotation_threads_id_fk') THEN
|
|
113
|
+
ALTER TABLE "document_annotation_comments" ADD CONSTRAINT "document_annotation_comments_thread_id_document_annotation_threads_id_fk" FOREIGN KEY ("thread_id") REFERENCES "public"."document_annotation_threads"("id") ON DELETE cascade ON UPDATE no action;
|
|
114
|
+
END IF;
|
|
115
|
+
END $$;
|
|
116
|
+
--> statement-breakpoint
|
|
117
|
+
DO $$ BEGIN
|
|
118
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_comments_issue_id_issues_id_fk') THEN
|
|
119
|
+
ALTER TABLE "document_annotation_comments" ADD CONSTRAINT "document_annotation_comments_issue_id_issues_id_fk" FOREIGN KEY ("issue_id") REFERENCES "public"."issues"("id") ON DELETE cascade ON UPDATE no action;
|
|
120
|
+
END IF;
|
|
121
|
+
END $$;
|
|
122
|
+
--> statement-breakpoint
|
|
123
|
+
DO $$ BEGIN
|
|
124
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_comments_document_id_documents_id_fk') THEN
|
|
125
|
+
ALTER TABLE "document_annotation_comments" ADD CONSTRAINT "document_annotation_comments_document_id_documents_id_fk" FOREIGN KEY ("document_id") REFERENCES "public"."documents"("id") ON DELETE cascade ON UPDATE no action;
|
|
126
|
+
END IF;
|
|
127
|
+
END $$;
|
|
128
|
+
--> statement-breakpoint
|
|
129
|
+
DO $$ BEGIN
|
|
130
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_comments_author_agent_id_agents_id_fk') THEN
|
|
131
|
+
ALTER TABLE "document_annotation_comments" ADD CONSTRAINT "document_annotation_comments_author_agent_id_agents_id_fk" FOREIGN KEY ("author_agent_id") REFERENCES "public"."agents"("id") ON DELETE set null ON UPDATE no action;
|
|
132
|
+
END IF;
|
|
133
|
+
END $$;
|
|
134
|
+
--> statement-breakpoint
|
|
135
|
+
DO $$ BEGIN
|
|
136
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_comments_created_by_run_id_heartbeat_runs_id_fk') THEN
|
|
137
|
+
ALTER TABLE "document_annotation_comments" ADD CONSTRAINT "document_annotation_comments_created_by_run_id_heartbeat_runs_id_fk" FOREIGN KEY ("created_by_run_id") REFERENCES "public"."heartbeat_runs"("id") ON DELETE set null ON UPDATE no action;
|
|
138
|
+
END IF;
|
|
139
|
+
END $$;
|
|
140
|
+
--> statement-breakpoint
|
|
141
|
+
DO $$ BEGIN
|
|
142
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_anchor_snapshots_company_id_companies_id_fk') THEN
|
|
143
|
+
ALTER TABLE "document_annotation_anchor_snapshots" ADD CONSTRAINT "document_annotation_anchor_snapshots_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;
|
|
144
|
+
END IF;
|
|
145
|
+
END $$;
|
|
146
|
+
--> statement-breakpoint
|
|
147
|
+
DO $$ BEGIN
|
|
148
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_anchor_snapshots_thread_id_document_annotation_threads_id_fk') THEN
|
|
149
|
+
ALTER TABLE "document_annotation_anchor_snapshots" ADD CONSTRAINT "document_annotation_anchor_snapshots_thread_id_document_annotation_threads_id_fk" FOREIGN KEY ("thread_id") REFERENCES "public"."document_annotation_threads"("id") ON DELETE cascade ON UPDATE no action;
|
|
150
|
+
END IF;
|
|
151
|
+
END $$;
|
|
152
|
+
--> statement-breakpoint
|
|
153
|
+
DO $$ BEGIN
|
|
154
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_anchor_snapshots_document_id_documents_id_fk') THEN
|
|
155
|
+
ALTER TABLE "document_annotation_anchor_snapshots" ADD CONSTRAINT "document_annotation_anchor_snapshots_document_id_documents_id_fk" FOREIGN KEY ("document_id") REFERENCES "public"."documents"("id") ON DELETE cascade ON UPDATE no action;
|
|
156
|
+
END IF;
|
|
157
|
+
END $$;
|
|
158
|
+
--> statement-breakpoint
|
|
159
|
+
DO $$ BEGIN
|
|
160
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_anchor_snapshots_from_revision_id_document_revisions_id_fk') THEN
|
|
161
|
+
ALTER TABLE "document_annotation_anchor_snapshots" ADD CONSTRAINT "document_annotation_anchor_snapshots_from_revision_id_document_revisions_id_fk" FOREIGN KEY ("from_revision_id") REFERENCES "public"."document_revisions"("id") ON DELETE set null ON UPDATE no action;
|
|
162
|
+
END IF;
|
|
163
|
+
END $$;
|
|
164
|
+
--> statement-breakpoint
|
|
165
|
+
DO $$ BEGIN
|
|
166
|
+
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'document_annotation_anchor_snapshots_to_revision_id_document_revisions_id_fk') THEN
|
|
167
|
+
ALTER TABLE "document_annotation_anchor_snapshots" ADD CONSTRAINT "document_annotation_anchor_snapshots_to_revision_id_document_revisions_id_fk" FOREIGN KEY ("to_revision_id") REFERENCES "public"."document_revisions"("id") ON DELETE set null ON UPDATE no action;
|
|
168
|
+
END IF;
|
|
169
|
+
END $$;
|
|
170
|
+
--> statement-breakpoint
|
|
171
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_threads_company_document_status_idx" ON "document_annotation_threads" USING btree ("company_id","document_id","status");
|
|
172
|
+
--> statement-breakpoint
|
|
173
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_threads_company_issue_status_idx" ON "document_annotation_threads" USING btree ("company_id","issue_id","status");
|
|
174
|
+
--> statement-breakpoint
|
|
175
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_threads_company_current_revision_open_idx" ON "document_annotation_threads" USING btree ("company_id","document_id","current_revision_id","status");
|
|
176
|
+
--> statement-breakpoint
|
|
177
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_threads_company_anchor_state_idx" ON "document_annotation_threads" USING btree ("company_id","anchor_state");
|
|
178
|
+
--> statement-breakpoint
|
|
179
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_comments_company_thread_created_at_idx" ON "document_annotation_comments" USING btree ("company_id","thread_id","created_at");
|
|
180
|
+
--> statement-breakpoint
|
|
181
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_comments_company_issue_created_at_idx" ON "document_annotation_comments" USING btree ("company_id","issue_id","created_at");
|
|
182
|
+
--> statement-breakpoint
|
|
183
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_comments_company_document_created_at_idx" ON "document_annotation_comments" USING btree ("company_id","document_id","created_at");
|
|
184
|
+
--> statement-breakpoint
|
|
185
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_comments_body_search_idx" ON "document_annotation_comments" USING gin ("body" gin_trgm_ops);
|
|
186
|
+
--> statement-breakpoint
|
|
187
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_anchor_snapshots_company_thread_created_at_idx" ON "document_annotation_anchor_snapshots" USING btree ("company_id","thread_id","created_at");
|
|
188
|
+
--> statement-breakpoint
|
|
189
|
+
CREATE INDEX IF NOT EXISTS "document_annotation_anchor_snapshots_company_document_revision_idx" ON "document_annotation_anchor_snapshots" USING btree ("company_id","document_id","to_revision_number");
|