UNPKG

eust-conciliation

Version:
33 lines (25 loc) 902 B
/* eslint-disable no-continue */ /* eslint-disable no-restricted-syntax */ import { DeepPartial, EntityTarget, ObjectLiteral, Repository, } from 'typeorm'; import { getPGConnection } from './postgres'; export abstract class BaseDBRepository<Entity extends ObjectLiteral, Model> { protected abstract entityClass: EntityTarget<Entity>; // eslint-disable-next-line no-unused-vars protected abstract toModel(entity: Entity): Model; // eslint-disable-next-line no-unused-vars protected abstract fromModel(model: Partial<Model>): DeepPartial<Entity>; protected get db(): Repository<Entity> { const dataSource = getPGConnection(); return dataSource.getRepository<Entity>(this.entityClass); } async save(data: Partial<Model>): Promise<Model> { const entity = this.fromModel(data); const result = await this.db.save(entity); return this.toModel(result); } }