import { Document, PaginatedResponse } from "./types"; import type { NexaBase } from "./client"; export declare class NexaQueryBuilder { private client; private collection; private _filters; private _data; private _options; constructor(client: NexaBase, collection: string); private addFilter; where(field: string, value: any): NexaQueryBuilder; where(field: string, operator: string, value: any): NexaQueryBuilder; orWhere(field: string, value: any): NexaQueryBuilder; orWhere(field: string, operator: string, value: any): NexaQueryBuilder; whereIn(field: string, values: any[]): NexaQueryBuilder; whereNotIn(field: string, values: any[]): NexaQueryBuilder; whereNull(field: string): NexaQueryBuilder; whereNotNull(field: string): NexaQueryBuilder; whereBetween(field: string, start: any, end: any): NexaQueryBuilder; whereStartsWith(field: string, value: string): NexaQueryBuilder; whereEndsWith(field: string, value: string): NexaQueryBuilder; whereLike(field: string, value: string): NexaQueryBuilder; whereILike(field: string, value: string): NexaQueryBuilder; set(data: Record): NexaQueryBuilder; insert(data: Record): NexaQueryBuilder; insertGetId(data?: Record): Promise; insertWithFile(data: Record, file: File, fieldName?: string): Promise; /** * Inserta muchos documentos en una sola request/transacción del lado * del servidor (máximo 5000 por llamada — para más, dividir en varias * llamadas). Antes este método hacía un `createDocument()` por cada * documento en un loop secuencial — parecía "bulk" pero en realidad * eran N requests HTTP independientes, cada una con su propia * transacción compitiendo por el mismo contador de la colección. Con * concurrencia real (varios `insertBulk()` en paralelo, o incluso uno * solo con muchos documentos que comparten una FK, ej. el mismo * archivo de origen) esto podía terminar en deadlocks reales de * Postgres del lado del servidor. */ insertBulk(documents: Record[]): Promise; update(data: Record): NexaQueryBuilder; updateGetModified(data?: Record): Promise; updateFirst(data?: Record): Promise; updateFirstWithFile(data: Record, file: File, fieldName?: string): Promise; deleteGetCount(): Promise; deleteFirst(): Promise; deleteById(id: string): Promise; select(...fields: string[]): Promise>; first(): Promise; find(id: string): Promise; count(): Promise; exists(): Promise; withIdempotency(key: string): NexaQueryBuilder; private _getFilteredDocuments; private _getFirstFilteredDocument; toQuery(): import("./query").NexaQuery; } export declare function createQueryBuilder(client: NexaBase, collection: string): NexaQueryBuilder;