@hollax/dexie-orm
Version:
Simple ORM for dexie js
165 lines (162 loc) • 5.38 kB
TypeScript
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;
}