Skip to content

Commit 96c99a6

Browse files
committed
feat(port-data): add skip to queryDocuments port #609
1 parent 7648b89 commit 96c99a6

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

packages/port-data/mod.test.ts

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,7 @@ Deno.test('data', async (t) => {
408408
fields: ['name'],
409409
sort: ['name'],
410410
limit: 1000,
411+
skip: 2,
411412
use_index: 'idx-name',
412413
},
413414
}),
@@ -577,6 +578,92 @@ Deno.test('data', async (t) => {
577578
})
578579
})
579580

581+
await t.step('skip', async (t) => {
582+
await t.step('should parse to a number, if provided', async () => {
583+
assert(
584+
await adapter.queryDocuments({
585+
db: 'foo',
586+
query: {
587+
selector: { name: { $gt: 'mike' } },
588+
fields: ['name'],
589+
sort: ['ASC' as const],
590+
skip: 1000,
591+
use_index: 'idx-name',
592+
},
593+
}),
594+
)
595+
596+
assert(
597+
await adapter.queryDocuments({
598+
db: 'foo',
599+
query: {
600+
selector: { name: { $gt: 'mike' } },
601+
fields: ['name'],
602+
sort: ['ASC' as const],
603+
limit: '1000',
604+
use_index: 'idx-name',
605+
},
606+
}),
607+
)
608+
609+
assert(
610+
await adapter.queryDocuments({
611+
db: 'foo',
612+
query: {
613+
selector: { name: { $gt: 'mike' } },
614+
fields: ['name'],
615+
sort: ['ASC' as const],
616+
skip: ' 1000 ',
617+
use_index: 'idx-name',
618+
},
619+
}),
620+
)
621+
622+
assert(
623+
await adapter.queryDocuments({
624+
db: 'foo',
625+
query: {
626+
selector: { name: { $gt: 'mike' } },
627+
fields: ['name'],
628+
sort: ['ASC' as const],
629+
skip: undefined,
630+
use_index: 'idx-name',
631+
},
632+
}),
633+
)
634+
})
635+
636+
await t.step('should reject the unparseable value', async () => {
637+
await assertRejects(() =>
638+
adapter.queryDocuments({
639+
db: '123',
640+
query: {
641+
selector: { name: { $gt: 'mike' } },
642+
fields: ['name'],
643+
sort: ['ASC' as const],
644+
// @ts-ignore
645+
skip: 'wut',
646+
use_index: 'idx-name',
647+
},
648+
})
649+
)
650+
651+
await assertRejects(() =>
652+
adapter.queryDocuments({
653+
db: '123',
654+
query: {
655+
selector: { name: { $gt: 'mike' } },
656+
fields: ['name'],
657+
sort: ['ASC' as const],
658+
// @ts-ignore
659+
skip: [],
660+
use_index: 'idx-name',
661+
},
662+
})
663+
)
664+
})
665+
})
666+
580667
await assertRejects(() =>
581668
adapter.queryDocuments({
582669
db: '123',
@@ -680,11 +767,11 @@ Deno.test('data', async (t) => {
680767
)
681768

682769
await assertRejects(() =>
683-
// @ts-ignore
684770
adapter.indexDocuments({
685771
db: 'foo',
686772
fields: ['name'],
687773
name: 'idx-name',
774+
// @ts-ignore
688775
partialFilter: 123,
689776
})
690777
)

packages/port-data/port.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ export const port = z.object({
111111
.union([z.array(z.string()), z.array(z.record(SortEnum))])
112112
.optional(),
113113
limit: maybeNumber.optional(),
114+
skip: maybeNumber.optional(),
114115
use_index: z.string().optional(),
115116
}),
116117
}),

0 commit comments

Comments
 (0)