import {defineQueries, defineQuery} from '@rocicorp/zero'; import {zql, type Item} from './schema.ts'; export type ItemStart = Pick; export type ListContextParams = { sortField: 'created' | 'modified'; sortDirection: 'asc' | 'desc'; }; export const queries = defineQueries({ item: { getSingleQuery: defineQuery(({args: {id}}: {args: {id: string}}) => zql.item.where('id', id).one(), ), getPageQuery: defineQuery( ({ args: {limit, start, dir, listContextParams}, }: { args: { limit: number; start: ItemStart | null; dir: 'forward' | 'backward'; listContextParams: ListContextParams; }; }) => { let q = zql.item.limit(limit); const {sortField, sortDirection} = listContextParams; const orderByDir = dir === 'forward' ? sortDirection : sortDirection === 'asc' ? 'desc' : 'asc'; q = q.orderBy(sortField, orderByDir).orderBy('id', orderByDir); if (start) { q = q.start(start, {inclusive: false}); } return q; }, ), }, });