UNPKG

@hollax/dexie-orm

Version:
165 lines (162 loc) 5.38 kB
import Dexie from '../node_modules/dexie/dist/dexie'; import { FilterHandler, QueryBuilder } from './QueryBuilder'; import { SchemaConfig } from './types'; export type WhereParam = Record<string, any>; export type ModelStatic = { getTableConnection(): Dexie.Table; _getSaveData(obj: Model, data?: Record<string, any>): Record<string, any>; setLastInsert(key: number): void; }; export declare class Model { id?: string | number; created?: string | number | Date; /** * This should be overiden by the derived class */ static tableName: string; protected static _connection?: Dexie.Table; /** * Setup class propertis use DexieModel.getColumns() returned value * @param {Object} data Updates class properties */ constructor(data?: {}); static get connection(): Dexie.Table<any, any, any> | undefined; populate(data: Record<string, any>): void; _beforeSave(): void; _afterSave(): void; static create(data: Record<string, any>): import("../node_modules/dexie/dist/dexie").PromiseExtended<Model>; static _getSaveData(obj: Record<string, any>, data?: Record<string, any>): Record<string, any>; /** * Saves the class property values @returns {Promise} put promise */ save(data?: Record<string, any>): import("../node_modules/dexie/dist/dexie").PromiseExtended<any>; /** * Delete data based on index vaue @returns {Promise} delete promise */ delete(): any; protected static _where(builder: QueryBuilder, where?: Record<string, any>): void; /** * Retrive single record * @param {Number|String} id Record id * @returns {Promise<this>} reolves to model instance */ static find(id: string | number): import("../node_modules/dexie/dist/dexie").PromiseExtended<any>; /** * Retrive single record * @returns {Promise} reolves to model instance */ static first(where?: WhereParam): Promise<any> | undefined; static last(where?: WhereParam): import("../node_modules/dexie/dist/dexie").PromiseExtended<any> | Promise<Model> | undefined; /** * Count record * @param {Object} where Where parameter @returns {Promise} count promise */ static count(where?: WhereParam): Promise<number> | undefined; /** * Count record * @param {String} column * @param {Mixed} value * @param {Function} filter @returns {Promise} count promise */ static countIn(column: string, values: any[], filter?: FilterHandler<Model>): import("../node_modules/dexie/dist/dexie").PromiseExtended<number>; /** * Get multiple record */ static fetch(builder: QueryBuilder, limit?: number, page?: number, order?: string, desc?: boolean): Promise<any> | undefined; /** * Get multiple records */ static all(whereCol: string, limit?: number, page?: number, order?: string, desc?: boolean): Promise<any> | undefined; /** * Add a filter callback to the query builder for the next query * @param callback * @returns */ static filter(callback: FilterHandler<Model>): QueryBuilder<any, any>; /** * Create a query builder * @param index * @returns */ static where(column: string): QueryBuilder<any, any>; /** * Where in clause * @param key * @param values * @returns */ static whereIn(key: string, values: any[]): Promise<any> | undefined; static whereNotIn(key: string, values: any[]): Promise<any> | undefined; /** * Insert mutiple record * @param {Object} data */ static insertAll(data: Record<string, any>[]): import("../node_modules/dexie/dist/dexie").PromiseExtended<any>; /** * Update Bulk * @param {any} data */ static updateAll(data: Record<string, any>[]): import("../node_modules/dexie/dist/dexie").PromiseExtended<any>; /** * Delete Bulk * @param {any} keys */ static deleteAll(keys: string[] | number[]): import("../node_modules/dexie/dist/dexie").PromiseExtended<void>; /** * Truncate table */ static truncate(): import("../node_modules/dexie/dist/dexie").PromiseExtended<void>; /** * Sets last insert * @param {any} key */ static setLastInsert(key: number): void; /** * */ static getLastInsert(): string | number; /** * Should be declared by derived class @returns {Dexie[table]} */ static setTableConnection(db: Dexie.Table): void; /** * * @returns {Dexie.table} */ static getTableConnection(): Dexie.Table<any, any, any>; /** * Get query builder */ static getQueryBuilder(): QueryBuilder<any, any>; /** * * @returns {Dexie.table} */ static query(): QueryBuilder<any, any>; /** * * @returns {} * * { * columns: string, * version: number * } */ static getSchema(): SchemaConfig[]; /** Tet table columns */ static getColumns(): string[]; /** */ static setTableName(name: string): void; /** */ static getTableName(): string; static getNumberValue(val: any): number; }