diff --git a/src/runtime/composables/query.ts b/src/runtime/composables/query.ts index 75a2a2009..dd05ac9b4 100644 --- a/src/runtime/composables/query.ts +++ b/src/runtime/composables/query.ts @@ -9,7 +9,7 @@ import { withContentBase } from './utils' /** * Query fetcher */ -export const queryFetch = (params: Partial) => { +export const queryFetch = (params: QueryBuilderParams) => { const apiPath = withContentBase(process.dev ? '/query' : `/query/${hash(params)}`) // Prefetch the query diff --git a/src/runtime/query/query.ts b/src/runtime/query/query.ts index 87e4d82fb..0288c25bc 100644 --- a/src/runtime/query/query.ts +++ b/src/runtime/query/query.ts @@ -5,7 +5,7 @@ const arrayParams = ['sort', 'where', 'only', 'without'] export const createQuery = ( fetcher: DatabaseFetcher, - queryParams?: Partial + queryParams?: QueryBuilderParams ): QueryBuilder => { const params = { ...queryParams diff --git a/src/runtime/server/api/navigation.ts b/src/runtime/server/api/navigation.ts index 4f11e3063..b3da1ad79 100644 --- a/src/runtime/server/api/navigation.ts +++ b/src/runtime/server/api/navigation.ts @@ -1,11 +1,11 @@ import { defineEventHandler } from 'h3' import { serverQueryContent } from '../storage' import { createNav } from '../navigation' -import { ParsedContentMeta, QueryBuilderParams } from '../../types' +import { ParsedContentMeta } from '../../types' import { getContentQuery } from '../../utils/query' export default defineEventHandler(async (event) => { - const query: Partial = getContentQuery(event) + const query = getContentQuery(event) const contents = await serverQueryContent(event, query) .where({ diff --git a/src/runtime/server/api/query.ts b/src/runtime/server/api/query.ts index 381eb3827..a8b9e33e5 100644 --- a/src/runtime/server/api/query.ts +++ b/src/runtime/server/api/query.ts @@ -1,10 +1,9 @@ import { createError, defineEventHandler } from 'h3' -import type { QueryBuilderParams } from '../../types' import { serverQueryContent } from '../storage' import { getContentQuery } from '../../utils/query' export default defineEventHandler(async (event) => { - const query: Partial = getContentQuery(event) + const query = getContentQuery(event) const contents = await serverQueryContent(event, query).find() // If no documents matchs and using findOne() diff --git a/src/runtime/server/storage.ts b/src/runtime/server/storage.ts index 22b138d58..e0880436c 100644 --- a/src/runtime/server/storage.ts +++ b/src/runtime/server/storage.ts @@ -122,10 +122,10 @@ export const getContent = async (event: CompatibilityEvent, id: string): Promise * Query contents */ export function serverQueryContent(event: CompatibilityEvent): QueryBuilder; -export function serverQueryContent(event: CompatibilityEvent, params?: Partial): QueryBuilder; +export function serverQueryContent(event: CompatibilityEvent, params?: QueryBuilderParams): QueryBuilder; export function serverQueryContent(event: CompatibilityEvent, path?: string, ...pathParts: string[]): QueryBuilder; -export function serverQueryContent (event: CompatibilityEvent, path?: string | Partial, ...pathParts: string[]) { - let params = (path || {}) as Partial +export function serverQueryContent (event: CompatibilityEvent, path?: string | QueryBuilderParams, ...pathParts: string[]) { + let params = (path || {}) as QueryBuilderParams if (typeof path === 'string') { path = withLeadingSlash(joinURL(path, ...pathParts)) // escape regex special chars diff --git a/src/runtime/types.d.ts b/src/runtime/types.d.ts index f0df92b64..ffd39cfd3 100644 --- a/src/runtime/types.d.ts +++ b/src/runtime/types.d.ts @@ -154,14 +154,14 @@ export interface SortFields { export type SortOptions = SortParams | SortFields export interface QueryBuilderParams { - first: boolean - skip: number - limit: number - only: string[] - without: string[] - sort: SortOptions[] - where: object[] - surround: { + first?: boolean + skip?: number + limit?: number + only?: string[] + without?: string[] + sort?: SortOptions[] + where?: object[] + surround?: { query: string | object before?: number after?: number diff --git a/src/runtime/utils/query.ts b/src/runtime/utils/query.ts index c51db59ff..7d0b5fd39 100644 --- a/src/runtime/utils/query.ts +++ b/src/runtime/utils/query.ts @@ -1,4 +1,5 @@ import { useQuery, CompatibilityEvent, createError } from 'h3' +import { QueryBuilderParams } from '../types' import { jsonParse } from './json' const parseQueryParams = (body: string) => { @@ -10,7 +11,7 @@ const parseQueryParams = (body: string) => { } const memory = {} -export const getContentQuery = (event: CompatibilityEvent) => { +export const getContentQuery = (event: CompatibilityEvent): QueryBuilderParams => { const { qid } = event.context.params const query: any = useQuery(event) || {}