import { EntityRepository, FilterQuery } from '@mikro-orm/core'; import { EntityAlreadyExistsException } from '../exceptions/entity-already-exists-exception.js'; export abstract class DwengoEntityRepository extends EntityRepository { public async save(entity: T, options?: { preventOverwrite?: boolean }): Promise { if (options?.preventOverwrite && (await this.findOne(entity))) { throw new EntityAlreadyExistsException(`A ${this.getEntityName()} with this identifier already exists.`); } await this.getEntityManager().persistAndFlush(entity); } public async deleteWhere(query: FilterQuery): Promise { const toDelete = await this.findOne(query); const em = this.getEntityManager(); if (toDelete) { em.remove(toDelete); await em.flush(); } } }