import { Paths } from '../types/Paths' import { ValueType } from 'b-pl-tree' import { TraverseCondition } from '../types/TraverseCondition' import { IndexDef } from '../types/IndexDef' import { Item } from '../types/Item' import { ISerializedCollectionConfig } from './ICollectionConfig' export interface IDataCollection { get config(): ISerializedCollectionConfig listIndexes( name: string, ): Array<{ name: string; key: { [key: string]: any } }> dropIndex(name: string): any createIndex(name: string, config: IndexDef): void ttl?: number name: string root: string reset(): Promise load(name?: string): Promise persist(name?: string): Promise push(item: T): Promise create(item: T): Promise save(update: T): Promise first(): Promise last(): Promise oldest(): Promise latest(): Promise lowest(key: Paths): Promise greatest(key: Paths): Promise find(condition: TraverseCondition): Promise> findFirst(condition: TraverseCondition): Promise findLast(condition: TraverseCondition): Promise findBy(key: Paths, id: ValueType): Promise> findFirstBy(key: Paths, id: ValueType): Promise findLastBy(key: Paths, id: ValueType): Promise findById(id: ValueType): Promise update(condition: TraverseCondition, update: Partial): Promise> updateFirst( condition: TraverseCondition, update: Partial, ): Promise updateLast( condition: TraverseCondition, update: Partial, ): Promise updateWithId(id: ValueType, update: Partial): Promise removeWithId(id: ValueType): Promise remove(condition: TraverseCondition): Promise> removeFirst(condition: TraverseCondition): Promise removeLast(condition: TraverseCondition): Promise }