pure-orm
Version:
A SQL Toolkit based on pure business objects passed to and from stateful data access objects
42 lines (41 loc) • 1.73 kB
TypeScript
import { IModel, ICollection, IEntities } from './core';
import { ICoreIntegratedDriver } from './driver-integrations/index';
export interface ICreateOptions {
entities: IEntities<IModel>;
db: any;
logError?: (err: Error) => never;
}
export interface IPureORM extends ICoreIntegratedDriver {
getMatching: <T extends IModel>(model: T) => Promise<T>;
getOneOrNoneMatching: <T extends IModel>(model: T) => Promise<T | void>;
getAnyMatching: <T extends ICollection<IModel>>(model: IModel) => Promise<T | void>;
getAllMatching: <T extends ICollection<IModel>>(model: IModel) => Promise<T>;
create: <T extends IModel>(model: T) => Promise<T>;
update: <T extends IModel>(model: T, options?: {
on: string;
}) => Promise<T>;
delete: <T extends IModel>(model: T) => Promise<void>;
deleteMatching: <T extends IModel>(model: T) => Promise<void>;
getSqlInsertParts: (model: IModel) => {
columns: string;
values: Array<string>;
valuesVar: Array<string>;
};
getSqlUpdateParts: (model: IModel, on?: string) => {
clause: string;
idVar: string;
values: Array<string>;
};
getMatchingParts: (model: IModel) => {
whereClause: string;
values: Array<string>;
};
getMatchingPartsObject: (model: IModel) => {
whereClause: string;
values: Array<string>;
};
getNewWith: (model: IModel, sqlColumns: any, values: any) => IModel;
getValueBySqlColumn: (model: IModel, sqlColumn: string) => string;
getSqlColumnForPropertyName: (model: IModel, propertyName: string) => string;
}
export declare const create: ({ entities: externalEntities, db, logError }: ICreateOptions) => IPureORM;