@remit/drizzle-service 0.0.98 → 0.0.100

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 (93) hide show
  1. package/package.json +1 -1
  2. package/src/batch.sqlite.test.ts +78 -0
  3. package/src/batch.ts +45 -0
  4. package/src/databases.ts +70 -0
  5. package/src/db.ts +1 -4
  6. package/src/generated-enum.test.ts +8 -0
  7. package/src/generated-id.test.ts +19 -0
  8. package/src/id.test.ts +0 -8
  9. package/src/id.ts +0 -6
  10. package/src/index.ts +16 -6
  11. package/src/repair/address-display-name.sqlite.test.ts +3 -5
  12. package/src/repair/address-display-name.ts +8 -3
  13. package/src/repair/junk-only-address.sqlite.test.ts +8 -36
  14. package/src/repair/stranded-sent-outbox.sqlite.test.ts +2 -9
  15. package/src/repos/account.conformance.sqlite.test.ts +1 -1
  16. package/src/repos/calendar-default.sqlite.test.ts +6 -6
  17. package/src/repos/calendar-put.sqlite.test.ts +40 -39
  18. package/src/repos/calendar-store.ts +273 -0
  19. package/src/repos/cascade-delete.sqlite.test.ts +7 -9
  20. package/src/repos/cascade-delete.test.ts +6 -13
  21. package/src/repos/cascade-delete.ts +127 -97
  22. package/src/repos/envelope.test.ts +1 -17
  23. package/src/repos/envelope.ts +83 -67
  24. package/src/repos/filter.test.ts +22 -2
  25. package/src/repos/filter.ts +1 -5
  26. package/src/repos/i4-account-config.test.ts +2 -2
  27. package/src/repos/i4-account-config.ts +5 -2
  28. package/src/repos/i4-account.test.ts +6 -2
  29. package/src/repos/i4-account.ts +12 -56
  30. package/src/repos/i4-address-junk-move.sqlite.test.ts +1 -1
  31. package/src/repos/i4-address-merge-flags.sqlite.test.ts +1 -2
  32. package/src/repos/i4-address.ts +58 -90
  33. package/src/repos/i4-mailbox-special-use.sqlite.test.ts +6 -2
  34. package/src/repos/i4-mailbox-special-use.ts +9 -6
  35. package/src/repos/i4-mailbox.sqlite.test.ts +12 -14
  36. package/src/repos/i4-mailbox.test.ts +17 -62
  37. package/src/repos/i4-mailbox.ts +121 -94
  38. package/src/repos/i4-organize-job-request.ts +0 -4
  39. package/src/repos/i4-outbox-attachment.ts +62 -33
  40. package/src/repos/mappers.ts +0 -16
  41. package/src/repos/message.sqlite.test.ts +62 -102
  42. package/src/repos/message.test.ts +6 -167
  43. package/src/repos/message.ts +227 -218
  44. package/src/repos/sync-warning.ts +76 -0
  45. package/src/repos/thread-message-body-muted.sqlite.test.ts +5 -10
  46. package/src/repos/thread-message-field-terms.sqlite.test.ts +5 -1
  47. package/src/repos/thread-message.sqlite.test.ts +2 -1
  48. package/src/repos/thread-message.test.ts +17 -4
  49. package/src/repos/thread-message.ts +502 -285
  50. package/src/repos/thread-search-predicates.ts +24 -26
  51. package/src/schema/message-data.ts +4 -8
  52. package/src/schema/sync-warning.ts +3 -0
  53. package/src/schema-sets/app.ts +17 -0
  54. package/src/schema-sets/mail.ts +32 -0
  55. package/src/schema-sets/search.ts +5 -0
  56. package/src/schema-version-accounting.sqlite.test.ts +56 -43
  57. package/src/schema.ts +3 -4
  58. package/src/search/thread-message-search.sqlite.test.ts +131 -0
  59. package/src/search/thread-message-search.ts +271 -0
  60. package/src/sqlite-client.ts +5 -7
  61. package/src/sqlite-repositories.ts +75 -0
  62. package/src/test-db-sqlite.ts +5 -13
  63. package/src/test-shipped-sqlite-schema.ts +46 -45
  64. package/src/test-sqlite.ts +35 -11
  65. package/src/vps-migrations-drift.sqlite.test.ts +81 -15
  66. package/src/account-granted-scopes-migration.sqlite.test.ts +0 -66
  67. package/src/account-synced-services-migration.sqlite.test.ts +0 -56
  68. package/src/mailbox-path-dedupe.sqlite.test.ts +0 -462
  69. package/src/mailbox-sync-status-backfill.sqlite.test.ts +0 -118
  70. package/src/outbox-created-cleanup.sqlite.test.ts +0 -83
  71. package/src/repair/duplicate-mailbox-mail.ts +0 -98
  72. package/src/repair/thread-message-category-contract.ts +0 -505
  73. package/src/repair/thread-message-category.sqlite.test.ts +0 -100
  74. package/src/repair/thread-message-category.ts +0 -415
  75. package/src/repos/calendar-migrations.sqlite.test.ts +0 -345
  76. package/src/repos/calendar-unit-of-work.ts +0 -31
  77. package/src/repos/config-import-atomicity.sqlite.test.ts +0 -255
  78. package/src/repos/filter-anchor-transaction.test.ts +0 -136
  79. package/src/repos/filter-anchor-transaction.ts +0 -45
  80. package/src/repos/filter-anchor.test.ts +0 -131
  81. package/src/repos/filter-anchor.ts +0 -105
  82. package/src/repos/i4-mailbox-special-use.structure.test.ts +0 -27
  83. package/src/repos/message-placement-backfill.sqlite.test.ts +0 -190
  84. package/src/repos/search-index-shape.test.ts +0 -82
  85. package/src/repos/search-index-shape.ts +0 -56
  86. package/src/repos/serialized-writes.sqlite.test.ts +0 -199
  87. package/src/repos/unit-of-work.sqlite.test.ts +0 -138
  88. package/src/repos/unit-of-work.test.ts +0 -109
  89. package/src/repos/unit-of-work.ts +0 -31
  90. package/src/schema/outbox.ts +0 -46
  91. package/src/schema-full-sqlite.ts +0 -13
  92. package/src/tx.sqlite.test.ts +0 -83
  93. package/src/tx.ts +0 -233
@@ -8,23 +8,18 @@
8
8
  * each case, which is exactly what such a pass cannot see (#1135, #1137).
9
9
  */
10
10
  import assert from "node:assert/strict";
11
- import { readFileSync } from "node:fs";
12
11
  import { after, before, describe, test } from "node:test";
13
12
  import type { CreateThreadMessageInput } from "@remit/data-ports";
14
13
  import { addressTable } from "../schema/i4-address.js";
15
14
  import { threadMessageTable } from "../schema/thread-message.js";
15
+ import { SearchIndex } from "../search/thread-message-search.js";
16
16
  import { createSqliteTestDb } from "../test-db-sqlite.js";
17
+ import { shippedIndexDdl } from "../test-shipped-sqlite-schema.js";
17
18
  import { DrizzleThreadMessageRepository } from "./thread-message.js";
18
19
 
19
- // The index the migrator installs for this predicate, read from the one
20
+ // The index the mail baseline creates for this predicate, read from the one
20
21
  // committed source so the plan assertion below is about the real object.
21
- const mutedIndexDdl = readFileSync(
22
- new URL(
23
- "../../../../npm-scripts/sqlite-address-muted-index.sql",
24
- import.meta.url,
25
- ),
26
- "utf8",
27
- );
22
+ const mutedIndexDdl = shippedIndexDdl("address_by_normalized_email");
28
23
 
29
24
  const ACCOUNT = "acct-seam";
30
25
  const MAILBOX = "mbx-seam";
@@ -66,7 +61,7 @@ describe("thread-message body and muted-sender predicates (sqlite)", () => {
66
61
  { searchIndex: true },
67
62
  ));
68
63
  sqlite.exec(mutedIndexDdl);
69
- repo = new DrizzleThreadMessageRepository(db);
64
+ repo = new DrizzleThreadMessageRepository(db, new SearchIndex(db, db));
70
65
  });
71
66
 
72
67
  after(async () => {
@@ -2,6 +2,7 @@ import assert from "node:assert/strict";
2
2
  import { after, before, describe, test } from "node:test";
3
3
  import type { CreateThreadMessageInput } from "@remit/data-ports";
4
4
  import { threadMessageTable } from "../schema/thread-message.js";
5
+ import { SearchIndex } from "../search/thread-message-search.js";
5
6
  import { createSqliteTestDb } from "../test-db-sqlite.js";
6
7
  import {
7
8
  DrizzleThreadMessageRepository,
@@ -54,7 +55,10 @@ describe("DrizzleThreadMessageRepository.listByFieldTerms (sqlite, #459)", () =>
54
55
  { searchIndex: true },
55
56
  );
56
57
  close = created.close;
57
- repo = new DrizzleThreadMessageRepository(created.db);
58
+ repo = new DrizzleThreadMessageRepository(
59
+ created.db,
60
+ new SearchIndex(created.db, created.db),
61
+ );
58
62
 
59
63
  await repo.create(
60
64
  makeInput({
@@ -2,6 +2,7 @@ import assert from "node:assert/strict";
2
2
  import { after, before, describe, test } from "node:test";
3
3
  import type { CreateThreadMessageInput } from "@remit/data-ports";
4
4
  import { threadMessageTable } from "../schema/thread-message.js";
5
+ import { SearchIndex } from "../search/thread-message-search.js";
5
6
  import { createSqliteTestDb } from "../test-db-sqlite.js";
6
7
  import {
7
8
  BASE_DATE,
@@ -57,7 +58,7 @@ describe("DrizzleThreadMessageRepository (sqlite)", () => {
57
58
  },
58
59
  { searchIndex: true },
59
60
  ));
60
- repo = new DrizzleThreadMessageRepository(db);
61
+ repo = new DrizzleThreadMessageRepository(db, new SearchIndex(db, db));
61
62
  });
62
63
 
63
64
  after(async () => {
@@ -3,6 +3,7 @@ import { after, before, describe, test } from "node:test";
3
3
  import type { CreateThreadMessageInput } from "@remit/data-ports";
4
4
  import shortUuid from "short-uuid";
5
5
  import { threadMessageTable } from "../schema/thread-message.js";
6
+ import { SearchIndex } from "../search/thread-message-search.js";
6
7
  import { createSqliteTestDb } from "../test-db-sqlite.js";
7
8
  import {
8
9
  clampThreadSearchLimit,
@@ -86,7 +87,10 @@ describe("DrizzleThreadMessageRepository.searchByMailboxWindow / countByMailbox"
86
87
  before(async () => {
87
88
  const harness = await setupDb();
88
89
  close = harness.close;
89
- repo = new DrizzleThreadMessageRepository(harness.db);
90
+ repo = new DrizzleThreadMessageRepository(
91
+ harness.db,
92
+ new SearchIndex(harness.db, harness.db),
93
+ );
90
94
  });
91
95
 
92
96
  after(async () => {
@@ -387,7 +391,10 @@ describe("DrizzleThreadMessageRepository.searchByDate", () => {
387
391
  before(async () => {
388
392
  const harness = await setupDb();
389
393
  close = harness.close;
390
- repo = new DrizzleThreadMessageRepository(harness.db);
394
+ repo = new DrizzleThreadMessageRepository(
395
+ harness.db,
396
+ new SearchIndex(harness.db, harness.db),
397
+ );
391
398
  });
392
399
 
393
400
  after(async () => {
@@ -914,7 +921,10 @@ describe("DrizzleThreadMessageRepository — native text search", () => {
914
921
  before(async () => {
915
922
  const harness = await setupDb();
916
923
  close = harness.close;
917
- repo = new DrizzleThreadMessageRepository(harness.db);
924
+ repo = new DrizzleThreadMessageRepository(
925
+ harness.db,
926
+ new SearchIndex(harness.db, harness.db),
927
+ );
918
928
  });
919
929
 
920
930
  after(async () => {
@@ -1086,7 +1096,10 @@ describe("DrizzleThreadMessageRepository — core CRUD", () => {
1086
1096
  before(async () => {
1087
1097
  const harness = await setupDb();
1088
1098
  close = harness.close;
1089
- repo = new DrizzleThreadMessageRepository(harness.db);
1099
+ repo = new DrizzleThreadMessageRepository(
1100
+ harness.db,
1101
+ new SearchIndex(harness.db, harness.db),
1102
+ );
1090
1103
  });
1091
1104
 
1092
1105
  after(async () => {