@andrejs1979/document
Version:
MongoDB-compatible document database for NoSQL
72 lines • 2.36 kB
TypeScript
/**
* NoSQL - Document Storage Engine
* High-performance document storage with Cloudflare D1/R2 integration
*/
import { Document, DocumentDatabaseConfig, QueryFilter, FindOptions, UpdateOperators, UpdateOptions, InsertOneResult, InsertManyResult, UpdateResult, DeleteResult } from '../types';
/**
* Document storage with caching and optimization
*/
export declare class DocumentStorage {
private d1;
private kvStore?;
private r2Bucket?;
private config;
private documentCache;
private queryCache;
private initialized;
constructor(config: DocumentDatabaseConfig);
/**
* Initialize storage with schema creation
*/
initialize(): Promise<void>;
/**
* Insert a single document
*/
insertOne(collection: string, document: Document): Promise<InsertOneResult>;
/**
* Insert multiple documents
*/
insertMany(collection: string, documents: Document[]): Promise<InsertManyResult>;
/**
* Find documents by filter
*/
find(collection: string, filter: QueryFilter, options?: FindOptions): Promise<Document[]>;
/**
* Find a single document
*/
findOne(collection: string, filter: QueryFilter, options?: FindOptions): Promise<Document | null>;
/**
* Update a single document
*/
updateOne(collection: string, filter: QueryFilter, update: UpdateOperators | Document, options?: UpdateOptions): Promise<UpdateResult>;
/**
* Delete documents
*/
deleteMany(collection: string, filter: QueryFilter): Promise<DeleteResult>;
/**
* Delete a single document
*/
deleteOne(collection: string, filter: QueryFilter): Promise<DeleteResult>;
/**
* Count documents
*/
countDocuments(collection: string, filter?: QueryFilter): Promise<number>;
private ensureInitialized;
private generateObjectId;
private extractSearchText;
private extractMetadata;
private extractIndexValues;
private buildQuery;
private buildFilterConditions;
private handleOperator;
private applyUpdateOperators;
private isUpdateOperators;
private createCoreIndexes;
private createMetadataTables;
private cacheDocument;
private getDocumentKey;
private getQueryCacheKey;
private clearQueryCache;
private storeInR2;
}
//# sourceMappingURL=document-storage.d.ts.map