miniorm
Version:
A lightweight, minimal TypeScript ORM & query‑builder for MySQL, PostgreSQL and SQLite
30 lines (29 loc) • 1.59 kB
TypeScript
import type { FindsType } from '../types/model.types';
import { type WhereObject } from '../types/query.types';
import { BaseEntityClass, QueryBuilder } from './query.builder';
export declare class Model<T = any> {
private dbName;
private tableName;
private entity;
private queryBuilder;
constructor(dbName: string, table: string | (new () => T) | typeof BaseEntityClass<T>, opt?: any);
find<K extends keyof T>(opt?: FindsType<T, K>): Promise<T[]>;
findAll<K extends keyof T>(fields?: K[]): Promise<T[]>;
findOne<K extends keyof T>(opt?: FindsType<T, K>): Promise<T>;
first<K extends keyof T>(opt?: FindsType<T, K>): Promise<T>;
create(data: Partial<T>): Promise<boolean>;
update(data: Partial<T>, ...whereConditions: (string | WhereObject<Partial<T>>)[]): Promise<any>;
delete(...whereConditions: (string | WhereObject<Partial<T>>)[]): Promise<any>;
count<K extends keyof T>(field?: K): Promise<number>;
max<K extends keyof T>(field: any): Promise<number>;
min<K extends keyof T>(field: K): Promise<number>;
avg<K extends keyof T>(field: K): Promise<number>;
sum<K extends keyof T>(field: K): Promise<number>;
exists(...whereConditions: (string | WhereObject<Partial<T>>)[]): Promise<boolean>;
pluck<K extends keyof T>(field: K): Promise<Array<T[K]>>;
raw(query: string, values?: (string | number | boolean | null)[]): Promise<any>;
query(): QueryBuilder<T>;
disconnect(): Promise<void>;
reconnect(): Promise<this>;
debug(type?: 'now' | 'final', func?: (sql: string, data: any) => void): this;
}