phibernate
Version:
Client side ORM and Delta Tracker for Relational data
54 lines (53 loc) • 3.88 kB
TypeScript
import { IEntity, PHQuery, QEntity, PHSQLQuery, SQLDialect, SQLStringDelete, PHSQLDelete, PHSQLUpdate, SQLStringUpdate } from "querydsl-typescript";
import { Observable, Subject } from "rxjs";
import { IdGenerator, IdGeneration } from "./IdGenerator";
import { ChangeGroupApi } from "../changeList/model/ChangeGroup";
import { EntityChangeApi } from "../changeList/model/EntityChange";
import { IEntityManager } from "../core/repository/EntityManager";
import { LocalStoreType, LocalStoreSetupInfo } from "./LocalStoreApi";
import { ILocalStoreAdaptor } from "./LocalStoreAdaptor";
import { EntityWhereChangeApi } from "../changeList/model/EntityWhereChange";
/**
* Created by Papa on 9/9/2016.
*/
export interface CascadeRecord {
entityName: string;
mappedBy: string;
manyEntity: any;
cascadeType: 'create' | 'remove' | 'update';
}
export interface RemovalRecord {
array: any[];
index: number;
}
export declare abstract class SqlAdaptor implements ILocalStoreAdaptor {
protected entityManager: IEntityManager;
type: LocalStoreType;
protected idGenerator: IdGenerator;
protected currentChangeGroup: ChangeGroupApi;
constructor(entityManager: IEntityManager, idGeneration: IdGeneration);
abstract initialize(setupInfo: LocalStoreSetupInfo): Promise<any>;
abstract wrapInTransaction(callback: () => Promise<any>): Promise<any>;
private verifyChangeGroup();
readonly activeChangeGroup: ChangeGroupApi;
create<E>(entityName: string, entity: E, changeGroup: ChangeGroupApi): Promise<EntityChangeApi>;
protected abstract createNative(qEntity: QEntity<any>, columnNames: string[], values: any[], cascadeRecords: CascadeRecord[], changeGroup: ChangeGroupApi): any;
insert<E>(entityName: string, entity: E, changeGroup: ChangeGroupApi): Promise<EntityChangeApi>;
protected abstract insertNative(qEntity: QEntity<any>, columnNames: string[], values: any[]): any;
delete<E>(entityName: string, entity: E, changeGroup: ChangeGroupApi): Promise<EntityChangeApi>;
protected abstract deleteNative(qEntity: QEntity<any>, entity: any, idValue: number | string, cascadeRecords: CascadeRecord[], changeGroup: ChangeGroupApi): any;
deleteWhere<IE extends IEntity>(entityName: string, phSqlDelete: PHSQLDelete<IE>, changeGroup: ChangeGroupApi): Promise<EntityWhereChangeApi>;
protected abstract deleteWhereNative<IE extends IEntity>(sqlStringDelete: SQLStringDelete<IE>, changeGroup: ChangeGroupApi): Promise<EntityWhereChangeApi>;
update<E>(entityName: string, entity: E, changeGroup: ChangeGroupApi): Promise<EntityChangeApi>;
protected abstract updateNative(qEntity: QEntity<any>, columnNames: string[], values: any[], idProperty: string, idValue: number | string, cascadeRecords: CascadeRecord[], changeGroup: ChangeGroupApi): any;
updateWhere<IE extends IEntity>(entityName: string, phSqlUpdate: PHSQLUpdate<IE>, changeGroup: ChangeGroupApi): Promise<EntityWhereChangeApi>;
protected abstract updateWhereNative<IE extends IEntity>(sqlStringUpdate: SQLStringUpdate<IE>, changeGroup: ChangeGroupApi): Promise<EntityWhereChangeApi>;
find<E, IE extends IEntity>(entityName: string, phSqlQuery: PHSQLQuery<IE>): Promise<E[]>;
protected abstract getDialect(): SQLDialect;
protected abstract findNative(sqlQuery: string, parameters: any[]): Promise<any[]>;
findOne<E, IE extends IEntity>(entityName: string, phSqlQuery: PHSQLQuery<IE>): Promise<E>;
save<E>(entityName: string, entity: E, changeGroup: ChangeGroupApi): Promise<EntityChangeApi>;
search<E, IE extends IEntity>(entityName: string, phSqlQuery: PHSQLQuery<IE>, subject?: Subject<E[]>): Observable<E[]>;
searchOne<E, IE extends IEntity>(entityName: string, phQuery: PHQuery<IE>, subject?: Subject<E>): Observable<E>;
warn(message: string): void;
}