|
1 | 1 | import { getUuidReplicaIdentityBson, OplogEntry, storage } from '@powersync/service-core'; |
2 | | -import { RequestParameters } from '@powersync/service-sync-rules'; |
| 2 | +import { ParameterLookup, RequestParameters } from '@powersync/service-sync-rules'; |
3 | 3 | import { expect, test } from 'vitest'; |
4 | 4 | import * as test_utils from '../test-utils/test-utils-index.js'; |
5 | 5 |
|
@@ -65,7 +65,9 @@ bucket_definitions: |
65 | 65 | }); |
66 | 66 | }); |
67 | 67 |
|
68 | | - const parameters = await bucketStorage.getParameterSets(result!.flushed_op, [['mybucket', '1', 'user1']]); |
| 68 | + const parameters = await bucketStorage.getParameterSets(result!.flushed_op, [ |
| 69 | + ParameterLookup.normalized('mybucket', '1', ['user1']) |
| 70 | + ]); |
69 | 71 | expect(parameters).toEqual([ |
70 | 72 | { |
71 | 73 | group_id: 'group1a' |
@@ -110,15 +112,19 @@ bucket_definitions: |
110 | 112 | }); |
111 | 113 | }); |
112 | 114 |
|
113 | | - const parameters = await bucketStorage.getParameterSets(result2!.flushed_op, [['mybucket', '1', 'user1']]); |
| 115 | + const parameters = await bucketStorage.getParameterSets(result2!.flushed_op, [ |
| 116 | + ParameterLookup.normalized('mybucket', '1', ['user1']) |
| 117 | + ]); |
114 | 118 | expect(parameters).toEqual([ |
115 | 119 | { |
116 | 120 | group_id: 'group2' |
117 | 121 | } |
118 | 122 | ]); |
119 | 123 |
|
120 | 124 | // Use the checkpoint to get older data if relevant |
121 | | - const parameters2 = await bucketStorage.getParameterSets(result1!.flushed_op, [['mybucket', '1', 'user1']]); |
| 125 | + const parameters2 = await bucketStorage.getParameterSets(result1!.flushed_op, [ |
| 126 | + ParameterLookup.normalized('mybucket', '1', ['user1']) |
| 127 | + ]); |
122 | 128 | expect(parameters2).toEqual([ |
123 | 129 | { |
124 | 130 | group_id: 'group1' |
@@ -183,8 +189,8 @@ bucket_definitions: |
183 | 189 | // There removal operation for the association of `list2`::`todo2` should not interfere with the new |
184 | 190 | // association of `list1`::`todo2` |
185 | 191 | const parameters = await bucketStorage.getParameterSets(result2!.flushed_op, [ |
186 | | - ['mybucket', '1', 'list1'], |
187 | | - ['mybucket', '1', 'list2'] |
| 192 | + ParameterLookup.normalized('mybucket', '1', ['list1']), |
| 193 | + ParameterLookup.normalized('mybucket', '1', ['list2']) |
188 | 194 | ]); |
189 | 195 |
|
190 | 196 | expect(parameters.sort((a, b) => (a.todo_id as string).localeCompare(b.todo_id as string))).toEqual([ |
@@ -230,11 +236,17 @@ bucket_definitions: |
230 | 236 |
|
231 | 237 | const checkpoint = result!.flushed_op; |
232 | 238 |
|
233 | | - const parameters1 = await bucketStorage.getParameterSets(checkpoint, [['mybucket', '1', 314n, 314, 3.14]]); |
| 239 | + const parameters1 = await bucketStorage.getParameterSets(checkpoint, [ |
| 240 | + ParameterLookup.normalized('mybucket', '1', [314n, 314, 3.14]) |
| 241 | + ]); |
234 | 242 | expect(parameters1).toEqual([TEST_PARAMS]); |
235 | | - const parameters2 = await bucketStorage.getParameterSets(checkpoint, [['mybucket', '1', 314, 314n, 3.14]]); |
| 243 | + const parameters2 = await bucketStorage.getParameterSets(checkpoint, [ |
| 244 | + ParameterLookup.normalized('mybucket', '1', [314, 314n, 3.14]) |
| 245 | + ]); |
236 | 246 | expect(parameters2).toEqual([TEST_PARAMS]); |
237 | | - const parameters3 = await bucketStorage.getParameterSets(checkpoint, [['mybucket', '1', 314n, 314, 3]]); |
| 247 | + const parameters3 = await bucketStorage.getParameterSets(checkpoint, [ |
| 248 | + ParameterLookup.normalized('mybucket', '1', [314n, 314, 3]) |
| 249 | + ]); |
238 | 250 | expect(parameters3).toEqual([]); |
239 | 251 | }); |
240 | 252 |
|
@@ -286,7 +298,9 @@ bucket_definitions: |
286 | 298 |
|
287 | 299 | const checkpoint = result!.flushed_op; |
288 | 300 |
|
289 | | - const parameters1 = await bucketStorage.getParameterSets(checkpoint, [['mybucket', '1', 1152921504606846976n]]); |
| 301 | + const parameters1 = await bucketStorage.getParameterSets(checkpoint, [ |
| 302 | + ParameterLookup.normalized('mybucket', '1', [1152921504606846976n]) |
| 303 | + ]); |
290 | 304 | expect(parameters1).toEqual([TEST_PARAMS]); |
291 | 305 | }); |
292 | 306 |
|
@@ -387,7 +401,7 @@ bucket_definitions: |
387 | 401 | const q1 = sync_rules.bucket_descriptors[0].parameter_queries[0]; |
388 | 402 |
|
389 | 403 | const lookups = q1.getLookups(parameters); |
390 | | - expect(lookups).toEqual([['by_workspace', '1', 'u1']]); |
| 404 | + expect(lookups).toEqual([ParameterLookup.normalized('by_workspace', '1', ['u1'])]); |
391 | 405 |
|
392 | 406 | const parameter_sets = await bucketStorage.getParameterSets(checkpoint, lookups); |
393 | 407 | expect(parameter_sets).toEqual([{ workspace_id: 'workspace1' }]); |
@@ -457,7 +471,7 @@ bucket_definitions: |
457 | 471 | const q1 = sync_rules.bucket_descriptors[0].parameter_queries[0]; |
458 | 472 |
|
459 | 473 | const lookups = q1.getLookups(parameters); |
460 | | - expect(lookups).toEqual([['by_public_workspace', '1']]); |
| 474 | + expect(lookups).toEqual([ParameterLookup.normalized('by_public_workspace', '1', [])]); |
461 | 475 |
|
462 | 476 | const parameter_sets = await bucketStorage.getParameterSets(checkpoint, lookups); |
463 | 477 | parameter_sets.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b))); |
@@ -546,15 +560,15 @@ bucket_definitions: |
546 | 560 | // Test intermediate values - could be moved to sync_rules.test.ts |
547 | 561 | const q1 = sync_rules.bucket_descriptors[0].parameter_queries[0]; |
548 | 562 | const lookups1 = q1.getLookups(parameters); |
549 | | - expect(lookups1).toEqual([['by_workspace', '1']]); |
| 563 | + expect(lookups1).toEqual([ParameterLookup.normalized('by_workspace', '1', [])]); |
550 | 564 |
|
551 | 565 | const parameter_sets1 = await bucketStorage.getParameterSets(checkpoint, lookups1); |
552 | 566 | parameter_sets1.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b))); |
553 | 567 | expect(parameter_sets1).toEqual([{ workspace_id: 'workspace1' }]); |
554 | 568 |
|
555 | 569 | const q2 = sync_rules.bucket_descriptors[0].parameter_queries[1]; |
556 | 570 | const lookups2 = q2.getLookups(parameters); |
557 | | - expect(lookups2).toEqual([['by_workspace', '2', 'u1']]); |
| 571 | + expect(lookups2).toEqual([ParameterLookup.normalized('by_workspace', '2', ['u1'])]); |
558 | 572 |
|
559 | 573 | const parameter_sets2 = await bucketStorage.getParameterSets(checkpoint, lookups2); |
560 | 574 | parameter_sets2.sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b))); |
@@ -861,7 +875,9 @@ bucket_definitions: |
861 | 875 |
|
862 | 876 | const { checkpoint } = await bucketStorage.getCheckpoint(); |
863 | 877 |
|
864 | | - const parameters = await bucketStorage.getParameterSets(checkpoint, [['mybucket', '1', 'user1']]); |
| 878 | + const parameters = await bucketStorage.getParameterSets(checkpoint, [ |
| 879 | + ParameterLookup.normalized('mybucket', '1', ['user1']) |
| 880 | + ]); |
865 | 881 | expect(parameters).toEqual([]); |
866 | 882 | }); |
867 | 883 |
|
|
0 commit comments