@cheetah.js/orm
Version:
A simple ORM for Cheetah.js
91 lines (90 loc) • 2.94 kB
TypeScript
import { AutoPath, FilterQuery, QueryOrderMap, ValueOrInstance } from './driver/driver.interface';
export declare class SqlBuilder<T> {
private readonly driver;
private entityStorage;
private statements;
private entity;
private model;
private aliases;
private logger;
private updatedColumns;
private originalColumns;
private conditionBuilder;
private modelTransformer;
private columnManager;
private joinManager;
constructor(model: new () => T);
select(columns?: AutoPath<T, never, '*'>[]): SqlBuilder<T>;
setStrategy(strategy?: 'joined' | 'select'): SqlBuilder<T>;
setInstance(instance: T): SqlBuilder<T>;
insert(values: Partial<{
[K in keyof T]: ValueOrInstance<T[K]>;
}>): SqlBuilder<T>;
update(values: Partial<{
[K in keyof T]: ValueOrInstance<T[K]>;
}>): SqlBuilder<T>;
delete(): SqlBuilder<T>;
where(where: FilterQuery<T>): SqlBuilder<T>;
orderBy(orderBy: (QueryOrderMap<T> & {
0?: never;
}) | QueryOrderMap<T>[]): SqlBuilder<T>;
limit(limit: number | undefined): SqlBuilder<T>;
offset(offset: number | undefined): SqlBuilder<T>;
load(load: string[]): SqlBuilder<T>;
count(): SqlBuilder<T>;
private getPrimaryKeyColumnName;
execute(): Promise<{
query: any;
startTime: number;
sql: string;
}>;
private beforeHooks;
private afterHooks;
executeAndReturnFirst(): Promise<T | undefined>;
executeAndReturnFirstOrFail(): Promise<T>;
executeAndReturnAll(): Promise<T[]>;
private hasOneToManyJoinedJoin;
private processOneToManyJoinedResult;
private attachOneToManyRelations;
private removeDuplicatesByPrimaryKey;
private getPrimaryKeyName;
private getPrimaryKeyNameForEntity;
executeCount(): Promise<number>;
private logExecution;
inTransaction<T>(callback: (builder: SqlBuilder<T>) => Promise<T>): Promise<T>;
private objectToStringMap;
private mapObjectKey;
private isNestedObject;
private buildColumnPath;
private splitPath;
private resolvePathEntity;
private nextEntity;
private resolveColumn;
private joinSegments;
private getTableName;
private t;
private getEntity;
/**
* Retrieves an alias for a given table name.
*
* @param {string} tableName - The name of the table.
* @private
* @returns {string} - The alias for the table name.
*/
private getAlias;
private generateUniqueAlias;
private withDefaultValues;
private applyDefaultProperties;
private setDefaultValue;
private applyOnInsertProperties;
private applyOnInsert;
private withUpdatedValues;
private applyOnUpdate;
callHook(type: string, model?: any): void;
private executeHook;
private reflectToValues;
private shouldSkipKey;
private reflectKey;
private reflectProperty;
private reflectRelation;
}