How do I specify a function return value that is a Doc object? I want to specify that a function returns an array of Doc<"users">, but without manually having to add the system _id and _creationTime fields in a union.
This is what I don't want to do because it's convoluted:
export const listPaginated = query({
args: {
paginationOpts: paginationOptsValidator,
searchQuery: v.optional(v.string()),
listId: v.optional(v.id("contactLists")),
},
returns: v.object({
page: v.array(
v
.object({
_id: v.id("contacts"),
_creationTime: v.number(),
})
.extend(ContactSchema.contacts.validator.fields)
),
continueCursor: v.union(v.string(), v.record(v.string(), v.null())),
isDone: v.boolean(),
}),
If I JUST use the validator (ContactSchema.contacts.validator), I get an error that my return includes _id and _creationTime fields, which I actually do want.
The following code is incorrect, but illustrative of what I want to do:
export const listPaginated = query({
args: {
paginationOpts: paginationOptsValidator,
searchQuery: v.optional(v.doc("users")), // imaginary v.doc() function
listId: v.optional(v.id("contactLists")),
},
returns: v.object({
page: v.array(v.),
continueCursor: v.union(v.string(), v.record()),
isDone: v.boolean(),
}),