mdbxjs
Version:
Node.js binding for libmdbx - a fast, compact, embeddable key-value database
137 lines (124 loc) • 3.79 kB
TypeScript
declare module 'mdbxjs' {
export enum EnvFlags {
NOSUBDIR = 0x4000,
NOSYNC = 0x10000,
RDONLY = 0x20000,
NOMETASYNC = 0x40000,
WRITEMAP = 0x80000,
MAPASYNC = 0x100000,
NOTLS = 0x200000,
NORDAHEAD = 0x800000,
NOMEMINIT = 0x1000000,
COALESCE = 0x2000000,
LIFORECLAIM = 0x4000000
}
export enum DatabaseFlags {
REVERSEKEY = 0x02,
DUPSORT = 0x04,
INTEGERKEY = 0x08,
DUPFIXED = 0x10,
INTEGERDUP = 0x20,
REVERSEDUP = 0x40,
CREATE = 0x40000
}
export enum WriteFlags {
NOOVERWRITE = 0x10,
NODUPDATA = 0x20,
CURRENT = 0x40,
RESERVE = 0x10000,
APPEND = 0x20000,
APPENDDUP = 0x40000,
MULTIPLE = 0x80000
}
export enum TransactionMode {
READONLY,
READWRITE
}
export enum SeekOperation {
FIRST,
FIRST_DUP,
GET_BOTH,
GET_BOTH_RANGE,
GET_CURRENT,
GET_MULTIPLE,
LAST,
LAST_DUP,
NEXT,
NEXT_DUP,
NEXT_MULTIPLE,
NEXT_NODUP,
PREV,
PREV_DUP,
PREV_NODUP,
SET,
SET_KEY,
SET_RANGE
}
export type Key = Buffer | string | number;
export type Value = Buffer | string | number | object;
export type KeyValue = { key: Buffer, value: Buffer };
export interface EnvOptions {
path?: string;
maxDbs?: number;
mapSize?: number;
maxReaders?: number;
flags?: EnvFlags | number;
}
export interface TransactionOptions {
mode?: TransactionMode;
parent?: Transaction;
}
export interface DatabaseOptions {
name?: string;
create?: boolean;
flags?: DatabaseFlags | number;
}
export class Environment {
constructor(options?: EnvOptions);
open(options?: EnvOptions): void;
close(): void;
beginTransaction(options?: TransactionOptions): Transaction;
openDatabase(options?: DatabaseOptions): Database;
sync(force?: boolean): void;
stat(): { psize: number, depth: number, branch_pages: number, leaf_pages: number, overflow_pages: number, entries: number };
info(): { mapSize: number, lastPageNumber: number, lastTransactionId: number, maxReaders: number, numReaders: number };
copy(path: string): void;
setMapSize(size: number): void;
}
export class Transaction {
constructor(env: Environment, options?: TransactionOptions);
abort(): void;
commit(): void;
renew(): void;
reset(): void;
get(dbi: Database, key: Key): Buffer | null;
put(dbi: Database, key: Key, value: Value, flags?: WriteFlags | number): void;
del(dbi: Database, key: Key, value?: Value): boolean;
openCursor(dbi: Database): Cursor;
}
export class Database {
constructor(env: Environment, options?: DatabaseOptions);
close(): void;
drop(): void;
stat(txn: Transaction): { entries: number, depth: number, branch_pages: number, leaf_pages: number, overflow_pages: number, page_size: number };
}
export class Cursor {
constructor(txn: Transaction, dbi: Database);
close(): void;
del(flags?: number): void;
get(op: SeekOperation, key?: Key, value?: Value): KeyValue | null;
put(key: Key, value: Value, flags?: WriteFlags | number): void;
count(): number;
}
// Simplified interface for beginners
export function open(path: string, options?: Partial<EnvOptions>): Environment;
export function collection(env: Environment, name?: string, options?: Partial<DatabaseOptions>): {
get(key: Key, txnOptions?: TransactionOptions): any;
put(key: Key, value: Value, txnOptions?: TransactionOptions): void;
del(key: Key, txnOptions?: TransactionOptions): boolean;
find(options: { gt?: Key, gte?: Key, lt?: Key, lte?: Key, limit?: number, reverse?: boolean }): Array<KeyValue>;
count(txnOptions?: TransactionOptions): number;
drop(): void;
clear(): void;
};
}