import { Schema, SchemaToObject, TCollectionMetadata, TDocumentCreateResponse, TDocumentPrefixed, TIndexCreateRequest, TIndexListResponse, TPagination, TPaginationReturn, TSchemaFieldDefinition } from '@zkdb/common'; import { Permission } from '@zkdb/permission'; import { Result } from '../../utils/result'; import { IDocument } from './document'; import { IMetadata } from './metadata'; /** * Interface for managing collection indexes. * @interface ICollectionIndex */ export interface ICollectionIndex { /** * Retrieves all indexes in the collection. * @returns A Result containing an array of index info objects. */ list(): Promise>; /** * Creates new indexes in the collection. * @param index * @returns A Result containing a boolean indicating success or failure. */ create(index: TIndexCreateRequest['index']): Promise>; /** * Drops an existing index in the collection. * @param indexName * @returns A Result containing a boolean indicating success or failure. */ drop(indexName: string): Promise>; } export interface ICollection { get index(): ICollectionIndex; get metadata(): IMetadata; exist(): Promise>; create(schema: Schema & (SchemaToObject extends T ? unknown : never), permission?: Permission, groupName?: string): Promise>; findOne(filter: Partial): Promise | null>>; findMany(filter?: Partial, pagination?: TPagination): Promise[]>>>; insert(document: T, permission?: Permission): Promise>; }