diff --git a/src/app/repo.ts b/src/app/repo.ts index a985389..de352e9 100644 --- a/src/app/repo.ts +++ b/src/app/repo.ts @@ -15,6 +15,8 @@ export abstract class Repo> { protected _limit = 0 protected _offset = 0 + private _transformer: (obj: any) => any + /** * Возвращает объект соотв. сущности, например new App() */ @@ -25,21 +27,24 @@ export abstract class Repo> { */ abstract Name(): string - _transformer: (object: any) => any - - constructor(storage: Storage) { + constructor(storage: Storage, transformer?: (obj: any) => any) { this._storage = storage this._entity = this.Entity() - this.resetTransformer() + this.setTransformer(transformer) } - resetTransformer() { - this._transformer = function (object: any): any { - const entity = this.Entity() - entity.data.fromObject(object) - entity._id = object._id - return entity + setTransformer(transformer?: (obj: any) => any): this { + if (transformer) { + this._transformer = transformer + } else { + this._transformer = function (object: any): any { + const entity = this.Entity() + entity.data.fromObject(object) + entity._id = object._id + return entity + } } + return this } get storage(): Storage {