UNPKG

rethinkts

Version:

A model system for RethinkDB, written in and for TypeScript.

49 lines (48 loc) 1.96 kB
import * as rethinkdb from 'rethinkdbdash'; import { ModelCtor } from './model'; export interface RethinkAdapterOptions extends rethinkdb.ImportOptions { models: ModelCtor<any>[]; } export declare const adapterKey: symbol; export declare type QueryPredicate<T> = (q: rethinkdb.Term<T>) => rethinkdb.Term<any>; export interface QueryOptions<T> { predicate?: QueryPredicate<T>; } export interface GetOptions<T> extends QueryOptions<T> { index?: string; } export interface JoinOptions { predicate?: (row) => void; } export declare class RethinkAdapter { private ropts; r: rethinkdb.Instance; private init; static fromModel(model: any): RethinkAdapter; constructor(ropts?: RethinkAdapterOptions); /** * Resolves when tables and indexes are ready. */ wait(): Promise<void>; /** * Drain the connection pool, allowing your app to exit. */ close(): void; all<T>(ctor: ModelCtor<T>, opts?: QueryOptions<T[]>): Promise<T[]>; find<T>(ctor: ModelCtor<T>, filter: Partial<T>, opts?: QueryOptions<T[]>): Promise<T[]>; findOne<T>(ctor: ModelCtor<T>, filter: Partial<T>, opts?: QueryOptions<T[]>): Promise<T>; get<T>(ctor: ModelCtor<T>, value: any, opts?: GetOptions<T[]>): Promise<T[]>; getOne<T>(ctor: ModelCtor<T>, value: any, opts?: GetOptions<T[]>): Promise<T>; query<T>(ctor: ModelCtor<T>, ...predicates: QueryPredicate<T[]>[]): rethinkdb.Term<T[]>; changes<T>(ctor: ModelCtor<T>, opts?: rethinkdb.ChangeOpts): Promise<rethinkdb.ChangesFeed<T>>; save<M>(model: M): Promise<M>; join<M>(model: M, relationshipKey: string, opts?: JoinOptions): Promise<M>; delete<M>(model: M): Promise<void>; private getModelQuery<T>(ctor); /** * Create the table and indexes if they don't already exist. * Doesn't create the database. */ private ensureTable(ctor); private getRowFromPath(path); }