import type { Document } from 'mongodb'; // these state properties make up a "query" export const QUERY_PROPERTIES = [ 'filter', 'project', 'collation', 'sort', 'skip', 'limit', 'maxTimeMS', ] as const; export type QueryProperty = typeof QUERY_PROPERTIES[number]; // How each query property is represented in the UI state. export type FormField = { value: T; string: string; valid: boolean; }; // All the possible form fields of a query export type QueryFormFields = { filter: FormField; project: FormField; collation: FormField; sort: FormField; skip: FormField; limit: FormField; maxTimeMS: FormField; }; export type QueryFormFieldEntries = { [field in keyof QueryFormFields]: [field, QueryFormFields[field]]; }[keyof QueryFormFields][]; // The runnable query (its actually run and saved) export type BaseQuery = Partial<{ [key in keyof QueryFormFields]: QueryFormFields[key]['value']; }>;