@rudderhq/db 0.7.23-canary.8 → 0.7.23
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/client.d.ts +5 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -0
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +2 -0
- package/dist/client.test.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/migrations/0163_organization_mutations.sql +88 -0
- package/dist/migrations/meta/_journal.json +7 -0
- package/dist/migrations/organization-mutations.test.ts +283 -0
- package/dist/schema/activity_log.d.ts.map +1 -1
- package/dist/schema/activity_log.js +1 -0
- package/dist/schema/activity_log.js.map +1 -1
- package/dist/schema/index.d.ts +1 -0
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +1 -0
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/organization_mutations.d.ts +297 -0
- package/dist/schema/organization_mutations.d.ts.map +1 -0
- package/dist/schema/organization_mutations.js +66 -0
- package/dist/schema/organization_mutations.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization_mutations.d.ts","sourceRoot":"","sources":["../../src/schema/organization_mutations.ts"],"names":[],"mappings":"AAiBA,0FAA0F;AAC1F,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+BrC,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+DxC,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { sql } from "drizzle-orm";
|
|
2
|
+
import { bigint, check, foreignKey, integer, jsonb, pgTable, primaryKey, text, timestamp, unique, uuid, } from "drizzle-orm/pg-core";
|
|
3
|
+
import { activityLog } from "./activity_log.js";
|
|
4
|
+
import { organizations } from "./organizations.js";
|
|
5
|
+
/** Private D1 state. Missing state and the default owner both keep Node authoritative. */
|
|
6
|
+
export const organizationMutationState = pgTable("organization_mutation_state", {
|
|
7
|
+
orgId: uuid("org_id")
|
|
8
|
+
.primaryKey()
|
|
9
|
+
.references(() => organizations.id, { onDelete: "cascade" }),
|
|
10
|
+
mutationVersion: bigint("mutation_version", { mode: "bigint" })
|
|
11
|
+
.notNull()
|
|
12
|
+
.default(sql `0`),
|
|
13
|
+
fenceEpoch: bigint("fence_epoch", { mode: "bigint" })
|
|
14
|
+
.notNull()
|
|
15
|
+
.default(sql `0`),
|
|
16
|
+
owner: text("owner").$type().notNull().default("node"),
|
|
17
|
+
updatedAt: timestamp("updated_at", { withTimezone: true })
|
|
18
|
+
.notNull()
|
|
19
|
+
.defaultNow(),
|
|
20
|
+
}, (table) => ({
|
|
21
|
+
versionCheck: check("organization_mutation_state_version_ck", sql `${table.mutationVersion} >= 0`),
|
|
22
|
+
fenceCheck: check("organization_mutation_state_fence_ck", sql `${table.fenceEpoch} >= 0`),
|
|
23
|
+
ownerCheck: check("organization_mutation_state_owner_ck", sql `${table.owner} in ('node', 'rust') and (${table.owner} = 'node' or ${table.fenceEpoch} > 0)`),
|
|
24
|
+
}));
|
|
25
|
+
/** Original committed outcomes, never a current-state cache or second writer. */
|
|
26
|
+
export const organizationMutationReceipts = pgTable("organization_mutation_receipts", {
|
|
27
|
+
orgId: uuid("org_id")
|
|
28
|
+
.notNull()
|
|
29
|
+
.references(() => organizationMutationState.orgId, {
|
|
30
|
+
onDelete: "cascade",
|
|
31
|
+
}),
|
|
32
|
+
idempotencyKey: text("idempotency_key").notNull(),
|
|
33
|
+
commandKind: text("command_kind")
|
|
34
|
+
.$type()
|
|
35
|
+
.notNull(),
|
|
36
|
+
commandFingerprint: text("command_fingerprint").notNull(),
|
|
37
|
+
receiptFormat: integer("receipt_format").notNull().default(1),
|
|
38
|
+
outcome: text("outcome").$type().notNull(),
|
|
39
|
+
resultingVersion: bigint("resulting_version", { mode: "bigint" }).notNull(),
|
|
40
|
+
fenceEpoch: bigint("fence_epoch", { mode: "bigint" }).notNull(),
|
|
41
|
+
activityId: uuid("activity_id").notNull(),
|
|
42
|
+
result: jsonb("result").$type().notNull(),
|
|
43
|
+
createdAt: timestamp("created_at", { withTimezone: true })
|
|
44
|
+
.notNull()
|
|
45
|
+
.defaultNow(),
|
|
46
|
+
}, (table) => ({
|
|
47
|
+
pk: primaryKey({ columns: [table.orgId, table.idempotencyKey] }),
|
|
48
|
+
activityUnique: unique("organization_mutation_receipts_activity_uq").on(table.activityId),
|
|
49
|
+
// The existing Node delete path removes activity before the organization.
|
|
50
|
+
activityFk: foreignKey({
|
|
51
|
+
name: "organization_mutation_receipts_activity_fk",
|
|
52
|
+
columns: [table.orgId, table.activityId],
|
|
53
|
+
foreignColumns: [activityLog.orgId, activityLog.id],
|
|
54
|
+
}).onDelete("no action"),
|
|
55
|
+
keyCheck: check("organization_mutation_receipts_key_ck", sql `octet_length(${table.idempotencyKey}) between 1 and 256`),
|
|
56
|
+
fingerprintCheck: check("organization_mutation_receipts_fingerprint_ck", sql `${table.commandFingerprint} ~ '^[0-9a-f]{64}$'`),
|
|
57
|
+
kindCheck: check("organization_mutation_receipts_kind_ck", sql `${table.commandKind} in ('organization_branding', 'project_goal_link')`),
|
|
58
|
+
outcomeCheck: check("organization_mutation_receipts_outcome_ck", sql `${table.outcome} in ('applied', 'noop')`),
|
|
59
|
+
versionCheck: check("organization_mutation_receipts_version_ck", sql `${table.resultingVersion} >= 0 and ${table.fenceEpoch} >= 0 and ${table.receiptFormat} > 0`),
|
|
60
|
+
resultCheck: check("organization_mutation_receipts_result_ck", sql `coalesce(
|
|
61
|
+
jsonb_typeof(${table.result}) = 'object'
|
|
62
|
+
and ${table.result}->>'organization_id' = ${table.orgId}::text
|
|
63
|
+
and ${table.result}->>'version' = ${table.resultingVersion}::text
|
|
64
|
+
and ${table.result}->>'fence_epoch' = ${table.fenceEpoch}::text, false)`),
|
|
65
|
+
}));
|
|
66
|
+
//# sourceMappingURL=organization_mutations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"organization_mutations.js","sourceRoot":"","sources":["../../src/schema/organization_mutations.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudderhq/db",
|
|
3
|
-
"version": "0.7.23
|
|
3
|
+
"version": "0.7.23",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"homepage": "https://github.com/Undertone0809/rudder",
|
|
6
6
|
"bugs": {
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"seed": "tsx src/seed.ts"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@rudderhq/shared": "0.7.23
|
|
54
|
+
"@rudderhq/shared": "0.7.23",
|
|
55
55
|
"drizzle-orm": "^0.45.2",
|
|
56
56
|
"embedded-postgres": "18.1.0-beta.16",
|
|
57
57
|
"postgres": "^3.4.8"
|