@lix-js/sdk 0.3.1 → 0.3.2

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.
Files changed (70) hide show
  1. package/dist/services/env-variables/index.js +1 -1
  2. package/package.json +4 -4
  3. package/dist/change-queue/change-queue-settled.d.ts +0 -13
  4. package/dist/change-queue/change-queue-settled.d.ts.map +0 -1
  5. package/dist/change-queue/change-queue-settled.js +0 -25
  6. package/dist/change-queue/change-queue-settled.js.map +0 -1
  7. package/dist/change-queue/change-queue-settled.test.d.ts +0 -2
  8. package/dist/change-queue/change-queue-settled.test.d.ts.map +0 -1
  9. package/dist/change-queue/change-queue-settled.test.js +0 -47
  10. package/dist/change-queue/change-queue-settled.test.js.map +0 -1
  11. package/dist/change-queue/file-handlers.d.ts +0 -24
  12. package/dist/change-queue/file-handlers.d.ts.map +0 -1
  13. package/dist/change-queue/file-handlers.js +0 -209
  14. package/dist/change-queue/file-handlers.js.map +0 -1
  15. package/dist/change-queue/index.d.ts +0 -2
  16. package/dist/change-queue/index.d.ts.map +0 -1
  17. package/dist/change-queue/index.js +0 -2
  18. package/dist/change-queue/index.js.map +0 -1
  19. package/dist/change-queue/init-change-queue.d.ts +0 -7
  20. package/dist/change-queue/init-change-queue.d.ts.map +0 -1
  21. package/dist/change-queue/init-change-queue.js +0 -80
  22. package/dist/change-queue/init-change-queue.js.map +0 -1
  23. package/dist/change-queue/init-change-queue.test.d.ts +0 -2
  24. package/dist/change-queue/init-change-queue.test.d.ts.map +0 -1
  25. package/dist/change-queue/init-change-queue.test.js +0 -373
  26. package/dist/change-queue/init-change-queue.test.js.map +0 -1
  27. package/dist/change-queue/with-skip-change-queue.d.ts +0 -3
  28. package/dist/change-queue/with-skip-change-queue.d.ts.map +0 -1
  29. package/dist/change-queue/with-skip-change-queue.js +0 -26
  30. package/dist/change-queue/with-skip-change-queue.js.map +0 -1
  31. package/dist/change-queue/with-skip-change-queue.test.d.ts +0 -2
  32. package/dist/change-queue/with-skip-change-queue.test.d.ts.map +0 -1
  33. package/dist/change-queue/with-skip-change-queue.test.js +0 -138
  34. package/dist/change-queue/with-skip-change-queue.test.js.map +0 -1
  35. package/dist/own-entity-change-control/apply-own-entity-change.d.ts +0 -10
  36. package/dist/own-entity-change-control/apply-own-entity-change.d.ts.map +0 -1
  37. package/dist/own-entity-change-control/apply-own-entity-change.js +0 -69
  38. package/dist/own-entity-change-control/apply-own-entity-change.js.map +0 -1
  39. package/dist/own-entity-change-control/apply-own-entity-change.test.d.ts +0 -2
  40. package/dist/own-entity-change-control/apply-own-entity-change.test.d.ts.map +0 -1
  41. package/dist/own-entity-change-control/apply-own-entity-change.test.js +0 -297
  42. package/dist/own-entity-change-control/apply-own-entity-change.test.js.map +0 -1
  43. package/dist/own-entity-change-control/change-controlled-tables.d.ts +0 -61
  44. package/dist/own-entity-change-control/change-controlled-tables.d.ts.map +0 -1
  45. package/dist/own-entity-change-control/change-controlled-tables.js +0 -71
  46. package/dist/own-entity-change-control/change-controlled-tables.js.map +0 -1
  47. package/dist/own-entity-change-control/change-controlled-tables.test.d.ts +0 -2
  48. package/dist/own-entity-change-control/change-controlled-tables.test.d.ts.map +0 -1
  49. package/dist/own-entity-change-control/change-controlled-tables.test.js +0 -48
  50. package/dist/own-entity-change-control/change-controlled-tables.test.js.map +0 -1
  51. package/dist/own-entity-change-control/database-triggers.d.ts +0 -5
  52. package/dist/own-entity-change-control/database-triggers.d.ts.map +0 -1
  53. package/dist/own-entity-change-control/database-triggers.js +0 -135
  54. package/dist/own-entity-change-control/database-triggers.js.map +0 -1
  55. package/dist/own-entity-change-control/database-triggers.test.d.ts +0 -2
  56. package/dist/own-entity-change-control/database-triggers.test.d.ts.map +0 -1
  57. package/dist/own-entity-change-control/database-triggers.test.js +0 -214
  58. package/dist/own-entity-change-control/database-triggers.test.js.map +0 -1
  59. package/dist/own-entity-change-control/index.d.ts +0 -2
  60. package/dist/own-entity-change-control/index.d.ts.map +0 -1
  61. package/dist/own-entity-change-control/index.js +0 -2
  62. package/dist/own-entity-change-control/index.js.map +0 -1
  63. package/dist/own-entity-change-control/with-skip-own-change-control.d.ts +0 -3
  64. package/dist/own-entity-change-control/with-skip-own-change-control.d.ts.map +0 -1
  65. package/dist/own-entity-change-control/with-skip-own-change-control.js +0 -24
  66. package/dist/own-entity-change-control/with-skip-own-change-control.js.map +0 -1
  67. package/dist/own-entity-change-control/with-skip-own-change-control.test.d.ts +0 -2
  68. package/dist/own-entity-change-control/with-skip-own-change-control.test.d.ts.map +0 -1
  69. package/dist/own-entity-change-control/with-skip-own-change-control.test.js +0 -49
  70. package/dist/own-entity-change-control/with-skip-own-change-control.test.js.map +0 -1
@@ -1,69 +0,0 @@
1
- import { CompiledQuery, } from "kysely";
2
- import { changeControlledTableIds, primaryKeysForEntityId, } from "./change-controlled-tables.js";
3
- import { withSkipOwnChangeControl } from "./with-skip-own-change-control.js";
4
- /**
5
- * Applies own changes to lix itself.
6
- */
7
- export async function applyOwnEntityChanges(args) {
8
- const executeInTransaction = async (trx) => {
9
- await withSkipOwnChangeControl(trx, async (trx) => {
10
- // defer foreign keys to avoid constraint violations
11
- // until the end of the transaction. otherwise, we would
12
- // need to apply the changes in the correct order.
13
- await trx.executeQuery(CompiledQuery.raw("PRAGMA defer_foreign_keys = ON;"));
14
- await Promise.all(args.changes.map(async (change) => {
15
- if (change.plugin_key !== "lix_own_change_control") {
16
- throw new Error("Expected 'lix_own_change_control' as plugin key but received " +
17
- change.plugin_key);
18
- }
19
- const snapshot = await trx
20
- .selectFrom("snapshot")
21
- .where("id", "=", change.snapshot_id)
22
- .select("content")
23
- .executeTakeFirstOrThrow();
24
- // remove the prefix and suffix from the schema key
25
- // `lix_key_value_table` -> `key_value`
26
- const tableName = change.schema_key
27
- .replace(/^lix_/, "")
28
- .replace(/_table$/, "");
29
- const primaryKeys = primaryKeysForEntityId(tableName, change.entity_id);
30
- let query;
31
- // deletion
32
- if (snapshot.content === null) {
33
- query = trx.deleteFrom(tableName);
34
- for (const [key, value] of primaryKeys) {
35
- query = query.where(key, "=", value);
36
- }
37
- }
38
- // upsert
39
- else {
40
- // take the current file data if the table is `file`
41
- // (can be optimized later to adjust the query instead)
42
- if (tableName === "file") {
43
- const data = await trx
44
- .selectFrom("file")
45
- .where("id", "=", change.entity_id)
46
- .select("data")
47
- .executeTakeFirst();
48
- snapshot.content.data =
49
- data?.data ??
50
- // empty uint8array will trigger applyChanges() to pass an empty file to the plugin
51
- new Uint8Array();
52
- }
53
- query = trx
54
- .insertInto(tableName)
55
- .values(snapshot.content)
56
- .onConflict((oc) => oc.doUpdateSet(snapshot.content));
57
- }
58
- await query.execute();
59
- }));
60
- });
61
- };
62
- if (args.lix.db.isTransaction) {
63
- return await executeInTransaction(args.lix.db);
64
- }
65
- else {
66
- return await args.lix.db.transaction().execute(executeInTransaction);
67
- }
68
- }
69
- //# sourceMappingURL=apply-own-entity-change.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-own-entity-change.js","sourceRoot":"","sources":["../../src/own-entity-change-control/apply-own-entity-change.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=apply-own-entity-change.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-own-entity-change.test.d.ts","sourceRoot":"","sources":["../../src/own-entity-change-control/apply-own-entity-change.test.ts"],"names":[],"mappings":""}
@@ -1,297 +0,0 @@
1
- import { test, expect } from "vitest";
2
- import { openLixInMemory } from "../lix/open-lix-in-memory.js";
3
- import { applyOwnEntityChanges } from "./apply-own-entity-change.js";
4
- import { mockJsonSnapshot } from "../snapshot/mock-json-snapshot.js";
5
- import {} from "../key-value/database-schema.js";
6
- test("it should apply insert changes correctly", async () => {
7
- const lix = await openLixInMemory({});
8
- const snapshot = mockJsonSnapshot({
9
- key: "key1",
10
- value: "value1",
11
- });
12
- const change = {
13
- id: "change1",
14
- entity_id: "key1",
15
- schema_key: "lix_key_value_table",
16
- plugin_key: "lix_own_change_control",
17
- file_id: "null",
18
- snapshot_id: snapshot.id,
19
- created_at: "2021-01-01T00:00:00.000Z",
20
- };
21
- await lix.db
22
- .insertInto("snapshot")
23
- .values({ content: snapshot.content })
24
- .execute();
25
- await applyOwnEntityChanges({ lix, changes: [change] });
26
- const result = await lix.db
27
- .selectFrom("key_value")
28
- .where("key", "=", "key1")
29
- .selectAll()
30
- .executeTakeFirst();
31
- expect(result).toEqual({ key: "key1", value: "value1" });
32
- });
33
- test("it should apply update changes correctly", async () => {
34
- const lix = await openLixInMemory({});
35
- await lix.db
36
- .insertInto("key_value")
37
- .values({ key: "key1", value: "old_value" })
38
- .execute();
39
- const snapshot = mockJsonSnapshot({
40
- key: "key1",
41
- value: "new_value",
42
- });
43
- const change = {
44
- id: "change1",
45
- schema_key: "lix_key_value_table",
46
- entity_id: "key1",
47
- file_id: "null",
48
- created_at: "2021-01-01T00:00:00.000Z",
49
- plugin_key: "lix_own_change_control",
50
- snapshot_id: snapshot.id,
51
- };
52
- await lix.db
53
- .insertInto("snapshot")
54
- .values({
55
- content: snapshot.content,
56
- })
57
- .execute();
58
- await applyOwnEntityChanges({ lix, changes: [change] });
59
- const result = await lix.db
60
- .selectFrom("key_value")
61
- .where("key", "=", "key1")
62
- .selectAll()
63
- .executeTakeFirst();
64
- expect(result).toEqual({ key: "key1", value: "new_value" });
65
- });
66
- test("it should apply delete changes correctly", async () => {
67
- const lix = await openLixInMemory({});
68
- await lix.db
69
- .insertInto("key_value")
70
- .values({ key: "key1", value: "value1" })
71
- .execute();
72
- const change = {
73
- id: "change1",
74
- schema_key: "lix_key_value_table",
75
- file_id: "null",
76
- created_at: "2021-01-01T00:00:00.000Z",
77
- entity_id: "key1",
78
- plugin_key: "lix_own_change_control",
79
- snapshot_id: "no-content",
80
- };
81
- await applyOwnEntityChanges({ lix, changes: [change] });
82
- const result = await lix.db
83
- .selectFrom("key_value")
84
- .where("key", "=", "key1")
85
- .selectAll()
86
- .executeTakeFirst();
87
- expect(result).toBeUndefined();
88
- });
89
- test("it should throw an error for invalid plugin key", async () => {
90
- const lix = await openLixInMemory({});
91
- const change = {
92
- id: "change1",
93
- schema_key: "lix_key_value_table",
94
- entity_id: "key1",
95
- file_id: "null",
96
- created_at: "2021-01-01T00:00:00.000Z",
97
- plugin_key: "invalid-plugin",
98
- snapshot_id: "snapshot1",
99
- };
100
- const snapshot = mockJsonSnapshot({
101
- key: "key1",
102
- value: "value1",
103
- });
104
- await lix.db
105
- .insertInto("snapshot")
106
- .values({
107
- content: snapshot.content,
108
- })
109
- .execute();
110
- await expect(applyOwnEntityChanges({ lix, changes: [change] })).rejects.toThrow("Expected 'lix_own_change_control' as plugin key but received invalid-plugin");
111
- });
112
- test("file.data is not changed by applyOwnEntityChanges", async () => {
113
- const lix = await openLixInMemory({});
114
- const file = await lix.db
115
- .insertInto("file")
116
- .values({
117
- path: "/test.txt",
118
- data: new TextEncoder().encode("hello"),
119
- metadata: {
120
- foo: "bar",
121
- },
122
- })
123
- .returningAll()
124
- .executeTakeFirstOrThrow();
125
- const change = await lix.db
126
- .selectFrom("change")
127
- .innerJoin("snapshot", "snapshot.id", "change.snapshot_id")
128
- .where("schema_key", "=", "lix_file_table")
129
- .where("entity_id", "=", file.id)
130
- .selectAll()
131
- .executeTakeFirst();
132
- expect(change).toBeDefined();
133
- expect(change?.content?.metadata).toEqual({ foo: "bar" });
134
- const snapshot = await lix.db
135
- .insertInto("snapshot")
136
- .values({
137
- content: {
138
- id: file.id,
139
- path: "/test.txt",
140
- metadata: {
141
- foo: "baz",
142
- },
143
- },
144
- })
145
- .returningAll()
146
- .executeTakeFirstOrThrow();
147
- const mockChange = {
148
- id: "change1",
149
- entity_id: file.id,
150
- schema_key: "lix_file_table",
151
- plugin_key: "lix_own_change_control",
152
- file_id: "null",
153
- snapshot_id: snapshot.id,
154
- created_at: "2021-01-01T00:00:00.000Z",
155
- };
156
- await applyOwnEntityChanges({ lix, changes: [mockChange] });
157
- const result = await lix.db
158
- .selectFrom("file")
159
- .where("id", "=", file.id)
160
- .selectAll()
161
- .executeTakeFirst();
162
- expect(result).toEqual({
163
- id: file.id,
164
- data: new TextEncoder().encode("hello"),
165
- path: "/test.txt",
166
- metadata: { foo: "baz" },
167
- });
168
- });
169
- test("foreign key constraints are deferred to make the order of applying changes irrelevant", async () => {
170
- const lix = await openLixInMemory({});
171
- const snapshots = [
172
- mockJsonSnapshot({
173
- id: "change-set-1",
174
- }),
175
- mockJsonSnapshot({
176
- change_id: "change0",
177
- change_set_id: "change-set-1",
178
- }),
179
- ];
180
- const mockChanges = [
181
- // applying changes in reverse order
182
- {
183
- id: "change2",
184
- entity_id: "change-set-1,change0",
185
- schema_key: "lix_change_set_element_table",
186
- plugin_key: "lix_own_change_control",
187
- file_id: "null",
188
- snapshot_id: snapshots[1].id,
189
- created_at: "2021-01-01T00:00:00.000Z",
190
- },
191
- {
192
- id: "change1",
193
- entity_id: "change-set-1",
194
- schema_key: "lix_change_set_table",
195
- plugin_key: "lix_own_change_control",
196
- file_id: "null",
197
- snapshot_id: snapshots[0].id,
198
- created_at: "2021-01-01T00:00:00.000Z",
199
- },
200
- ];
201
- for (const snapshot of snapshots) {
202
- // @ts-expect-error - 'cannot' insert into generated column error
203
- delete snapshot.id;
204
- }
205
- await lix.db
206
- .insertInto("snapshot")
207
- .values(snapshots.map((s) => ({ content: s.content })))
208
- .execute();
209
- // insert change that the change set element references
210
- await lix.db
211
- .insertInto("change")
212
- .values({
213
- id: "change0",
214
- plugin_key: "mock",
215
- file_id: "null",
216
- entity_id: "mock",
217
- schema_key: "mock",
218
- snapshot_id: "no-content",
219
- })
220
- .execute();
221
- await expect(applyOwnEntityChanges({ lix, changes: mockChanges })).resolves.toBeUndefined();
222
- });
223
- test("foreign key constraints are obeyed", async () => {
224
- const lix = await openLixInMemory({});
225
- const snapshots = [
226
- mockJsonSnapshot({
227
- // both change 0 and the change set are missing
228
- change_id: "change0",
229
- change_set_id: "change-set-1",
230
- }),
231
- ];
232
- const mockChanges = [
233
- {
234
- id: "change2",
235
- // the change set for this change does not exist
236
- entity_id: "change-set-1,change0",
237
- schema_key: "lix_change_set_element_table",
238
- plugin_key: "lix_own_change_control",
239
- file_id: "null",
240
- snapshot_id: snapshots[0].id,
241
- created_at: "2021-01-01T00:00:00.000Z",
242
- },
243
- ];
244
- for (const snapshot of snapshots) {
245
- // @ts-expect-error - 'cannot' insert into generated column error
246
- delete snapshot.id;
247
- }
248
- await lix.db
249
- .insertInto("snapshot")
250
- .values(snapshots.map((s) => ({ content: s.content })))
251
- .execute();
252
- // insert change that the change set element references
253
- await lix.db
254
- .insertInto("change")
255
- .values({
256
- id: "change0",
257
- plugin_key: "mock",
258
- file_id: "null",
259
- entity_id: "mock",
260
- schema_key: "mock",
261
- snapshot_id: "no-content",
262
- })
263
- .execute();
264
- expect(applyOwnEntityChanges({ lix, changes: mockChanges })).rejects.toThrow();
265
- });
266
- // https://github.com/opral/lix-sdk/issues/185
267
- test("applying own entity changes doesn't lead to the creation of new changes", async () => {
268
- const lix = await openLixInMemory({});
269
- const snapshot = mockJsonSnapshot({
270
- key: "mock-key",
271
- value: "1+1=2",
272
- });
273
- await lix.db
274
- .insertInto("snapshot")
275
- .values({
276
- content: snapshot.content,
277
- })
278
- .execute();
279
- const changesBefore = await lix.db.selectFrom("change").selectAll().execute();
280
- await applyOwnEntityChanges({
281
- lix,
282
- changes: [
283
- {
284
- id: "change0",
285
- entity_id: "mock-key",
286
- file_id: "null",
287
- plugin_key: "lix_own_change_control",
288
- schema_key: "lix_key_value_table",
289
- snapshot_id: snapshot.id,
290
- created_at: "2021-01-01T00:00:00Z",
291
- },
292
- ],
293
- });
294
- const changesAfter = await lix.db.selectFrom("change").selectAll().execute();
295
- expect(changesBefore).toEqual(changesAfter);
296
- });
297
- //# sourceMappingURL=apply-own-entity-change.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"apply-own-entity-change.test.js","sourceRoot":"","sources":["../../src/own-entity-change-control/apply-own-entity-change.test.ts"],"names":[],"mappings":"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"}
@@ -1,61 +0,0 @@
1
- export declare const changeControlledTableIds: {
2
- readonly account: readonly ["id"];
3
- readonly comment: readonly ["id"];
4
- readonly change_set: readonly ["id"];
5
- readonly change_author: readonly ["change_id", "account_id"];
6
- readonly change_set_element: readonly ["change_set_id", "change_id"];
7
- readonly change_set_label: readonly ["label_id", "change_set_id"];
8
- readonly change_set_label_author: readonly ["label_id", "change_set_id", "account_id"];
9
- readonly discussion: readonly ["id"];
10
- readonly file: readonly ["id"];
11
- readonly key_value: readonly ["key"];
12
- readonly version: readonly ["id"];
13
- readonly version_change: readonly ["version_id", "change_id"];
14
- };
15
- /**
16
- * The result of a PRAGMA table_info call.
17
- *
18
- * @example
19
- * const tableInfo = sqlite.exec({
20
- * sql: `PRAGMA table_info(change_author);`,
21
- * returnValue: "resultRows",
22
- * rowMode: "object",
23
- * }) as PragmaTableInfo;
24
- */
25
- export type PragmaTableInfo = Array<{
26
- /**
27
- * The column name
28
- */
29
- name: string;
30
- /**
31
- * 0 if not a primary key
32
- * 1 if primary key
33
- * 2... if part of a multi-column primary key
34
- */
35
- pk: number;
36
- }>;
37
- /**
38
- * Returns the entity id for a row in a change controlled table.
39
- */
40
- export declare function entityIdForRow(
41
- /**
42
- * The name of the table.
43
- */
44
- tableName: keyof typeof changeControlledTableIds,
45
- /**
46
- * The values of the row.
47
- */
48
- ...values: any[]): string;
49
- /**
50
- * Returns the primary keys for a row in a change controlled table.
51
- */
52
- export declare function primaryKeysForEntityId(
53
- /**
54
- * The name of the table.
55
- */
56
- tableName: keyof typeof changeControlledTableIds,
57
- /**
58
- * The values of the row.
59
- */
60
- entitiyId: string): [string, any][];
61
- //# sourceMappingURL=change-controlled-tables.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-controlled-tables.d.ts","sourceRoot":"","sources":["../../src/own-entity-change-control/change-controlled-tables.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;CAa3B,CAAC;AAKX;;;;;;;;;GASG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC;IACnC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;CACX,CAAC,CAAC;AAEH;;GAEG;AACH,wBAAgB,cAAc;AAC7B;;GAEG;AACH,SAAS,EAAE,MAAM,OAAO,wBAAwB;AAChD;;GAEG;AACH,GAAG,MAAM,EAAE,GAAG,EAAE,GACd,MAAM,CA2BR;AAED;;GAEG;AACH,wBAAgB,sBAAsB;AACrC;;GAEG;AACH,SAAS,EAAE,MAAM,OAAO,wBAAwB;AAChD;;GAEG;AACH,SAAS,EAAE,MAAM,GACf,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAQjB"}
@@ -1,71 +0,0 @@
1
- export const changeControlledTableIds = {
2
- account: ["id"],
3
- comment: ["id"],
4
- change_set: ["id"],
5
- change_author: ["change_id", "account_id"],
6
- change_set_element: ["change_set_id", "change_id"],
7
- change_set_label: ["label_id", "change_set_id"],
8
- change_set_label_author: ["label_id", "change_set_id", "account_id"],
9
- discussion: ["id"],
10
- file: ["id"],
11
- key_value: ["key"],
12
- version: ["id"],
13
- version_change: ["version_id", "change_id"],
14
- };
15
- /**
16
- * Returns the entity id for a row in a change controlled table.
17
- */
18
- export function entityIdForRow(
19
- /**
20
- * The name of the table.
21
- */
22
- tableName,
23
- /**
24
- * The values of the row.
25
- */
26
- ...values) {
27
- let entityId = "";
28
- // only has one primary key
29
- if (changeControlledTableIds[tableName].length === 1) {
30
- const index = changeControlledTableIds[tableName].indexOf(
31
- // @ts-expect-error - no clue why
32
- changeControlledTableIds[tableName][0]);
33
- entityId = values[index];
34
- }
35
- // has compound primary key that are joined with a comma.
36
- else {
37
- for (const column of changeControlledTableIds[tableName]) {
38
- const index = changeControlledTableIds[tableName].indexOf(
39
- // @ts-expect-error - no clue why
40
- column);
41
- if (entityId === "") {
42
- entityId = values[index];
43
- }
44
- else {
45
- entityId = [entityId, values[index]].join(",");
46
- }
47
- }
48
- }
49
- return entityId;
50
- }
51
- /**
52
- * Returns the primary keys for a row in a change controlled table.
53
- */
54
- export function primaryKeysForEntityId(
55
- /**
56
- * The name of the table.
57
- */
58
- tableName,
59
- /**
60
- * The values of the row.
61
- */
62
- entitiyId) {
63
- const primaryKeys = changeControlledTableIds[tableName];
64
- if (primaryKeys.length === 1) {
65
- return [[primaryKeys[0], entitiyId]];
66
- }
67
- else {
68
- return entitiyId.split(",").map((id, index) => [primaryKeys[index], id]);
69
- }
70
- }
71
- //# sourceMappingURL=change-controlled-tables.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-controlled-tables.js","sourceRoot":"","sources":["../../src/own-entity-change-control/change-controlled-tables.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACvC,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,UAAU,EAAE,CAAC,IAAI,CAAC;IAClB,aAAa,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IAC1C,kBAAkB,EAAE,CAAC,eAAe,EAAE,WAAW,CAAC;IAClD,gBAAgB,EAAE,CAAC,UAAU,EAAE,eAAe,CAAC;IAC/C,uBAAuB,EAAE,CAAC,UAAU,EAAE,eAAe,EAAE,YAAY,CAAC;IACpE,UAAU,EAAE,CAAC,IAAI,CAAC;IAClB,IAAI,EAAE,CAAC,IAAI,CAAC;IACZ,SAAS,EAAE,CAAC,KAAK,CAAC;IAClB,OAAO,EAAE,CAAC,IAAI,CAAC;IACf,cAAc,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC;CAClC,CAAC;AA4BX;;GAEG;AACH,MAAM,UAAU,cAAc;AAC7B;;GAEG;AACH,SAAgD;AAChD;;GAEG;AACH,GAAG,MAAa;IAEhB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,2BAA2B;IAC3B,IAAI,wBAAwB,CAAC,SAAS,CAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,CAAE,CAAC,OAAO;QACzD,iCAAiC;QACjC,wBAAwB,CAAC,SAAS,CAAE,CAAC,CAAC,CAAC,CACvC,CAAC;QACF,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,yDAAyD;SACpD,CAAC;QACL,KAAK,MAAM,MAAM,IAAI,wBAAwB,CAAC,SAAS,CAAE,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,CAAE,CAAC,OAAO;YACzD,iCAAiC;YACjC,MAAM,CACN,CAAC;YACF,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;gBACrB,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACP,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAChD,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;AACrC;;GAEG;AACH,SAAgD;AAChD;;GAEG;AACH,SAAiB;IAEjB,MAAM,WAAW,GAAG,wBAAwB,CAAC,SAAS,CAAE,CAAC;IAEzD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAE,EAAE,SAAS,CAAC,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACP,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,KAAK,CAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;AACF,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=change-controlled-tables.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-controlled-tables.test.d.ts","sourceRoot":"","sources":["../../src/own-entity-change-control/change-controlled-tables.test.ts"],"names":[],"mappings":""}
@@ -1,48 +0,0 @@
1
- import { test, expect } from "vitest";
2
- import { changeControlledTableIds, entityIdForRow, primaryKeysForEntityId, } from "./change-controlled-tables.js";
3
- import { loadDatabaseInMemory } from "sqlite-wasm-kysely";
4
- import { newLixFile } from "../lix/new-lix.js";
5
- test("roundtrip entity_id test for single primary key", () => {
6
- const tableName = "key_value";
7
- const row = ["lix_mock_key", "value1"];
8
- const entityId = entityIdForRow(tableName, ...row);
9
- const primaryKeys = primaryKeysForEntityId(tableName, entityId);
10
- expect(entityId).toBe("lix_mock_key");
11
- expect(primaryKeys).toEqual([["key", "lix_mock_key"]]);
12
- });
13
- test("roundtrip entity_id test for compound primary keys", () => {
14
- const tableName = "change_author";
15
- const row = ["294u-2345", "0128-34928"];
16
- const entityId = entityIdForRow(tableName, ...row);
17
- const primaryKeys = primaryKeysForEntityId(tableName, entityId);
18
- expect(entityId).toBe("294u-2345,0128-34928");
19
- expect(primaryKeys).toEqual([
20
- ["change_id", "294u-2345"],
21
- ["account_id", "0128-34928"],
22
- ]);
23
- });
24
- // otherwise the change controlled entity_id will be wrong.
25
- //* if this tests fails, someone did a db schema change
26
- //* on the primary key order that should not have been done.
27
- test("the primary key order matches the order the primary keys in the database schema", async () => {
28
- const sqlite = await loadDatabaseInMemory(await (await newLixFile()).arrayBuffer());
29
- const tableInfos = {};
30
- for (const table of Object.keys(changeControlledTableIds)) {
31
- tableInfos[table] = sqlite.exec({
32
- sql: `PRAGMA table_info(${table});`,
33
- returnValue: "resultRows",
34
- rowMode: "object",
35
- });
36
- }
37
- for (const table of Object.keys(changeControlledTableIds)) {
38
- const tableInfo = tableInfos[table];
39
- const primaryKeys = tableInfo
40
- .filter((column) => column.pk)
41
- .sort((a, b) => a.pk - b.pk)
42
- .map((c) => c.name);
43
- expect(primaryKeys).toEqual(
44
- // @ts-expect-error - some type narrowing problem. not important
45
- changeControlledTableIds[table]);
46
- }
47
- });
48
- //# sourceMappingURL=change-controlled-tables.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"change-controlled-tables.test.js","sourceRoot":"","sources":["../../src/own-entity-change-control/change-controlled-tables.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EACN,wBAAwB,EACxB,cAAc,EACd,sBAAsB,GAEtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;IAC5D,MAAM,SAAS,GAA4B,WAAW,CAAC;IACvD,MAAM,GAAG,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACtC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;IAC/D,MAAM,SAAS,GAA4B,eAAe,CAAC;IAE3D,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAExC,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,GAAG,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEhE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC9C,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;QAC3B,CAAC,WAAW,EAAE,WAAW,CAAC;QAC1B,CAAC,YAAY,EAAE,YAAY,CAAC;KAC5B,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,2DAA2D;AAC3D,uDAAuD;AACvD,4DAA4D;AAC5D,IAAI,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;IAClG,MAAM,MAAM,GAAG,MAAM,oBAAoB,CACxC,MAAM,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,WAAW,EAAE,CACxC,CAAC;IAEF,MAAM,UAAU,GAAoC,EAAE,CAAC;IAEvD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC3D,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;YAC/B,GAAG,EAAE,qBAAqB,KAAK,IAAI;YACnC,WAAW,EAAE,YAAY;YACzB,OAAO,EAAE,QAAQ;SACjB,CAAoB,CAAC;IACvB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAC3D,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAE,CAAC;QAErC,MAAM,WAAW,GAAG,SAAS;aAC3B,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;aAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO;QAC1B,gEAAgE;QAChE,wBAAwB,CAAC,KAAK,CAAC,CAC/B,CAAC;IACH,CAAC;AACF,CAAC,CAAC,CAAC"}
@@ -1,5 +0,0 @@
1
- import type { SqliteDatabase } from "sqlite-wasm-kysely";
2
- import type { LixDatabaseSchema } from "../database/schema.js";
3
- import type { Kysely } from "kysely";
4
- export declare function applyOwnEntityChangeControlTriggers(sqlite: SqliteDatabase, db: Kysely<LixDatabaseSchema>): void;
5
- //# sourceMappingURL=database-triggers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database-triggers.d.ts","sourceRoot":"","sources":["../../src/own-entity-change-control/database-triggers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AASrC,wBAAgB,mCAAmC,CAClD,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,MAAM,CAAC,iBAAiB,CAAC,GAC3B,IAAI,CAqEN"}