import { FindOneOptions, ObjectLiteral, Repository } from "typeorm";

// Envoltorio de solo-INSERT para una tabla externa del ERP que necesita UN
// camino de escritura deliberado y acotado (ver MaepluMirrorService). No
// expone save/update/delete/remove/upsert — ni por accidente, ni por un
// desarrollador nuevo que copie el patron de acceso de otro servicio.
export class InsertOnlyRepository<T extends ObjectLiteral> {
  constructor(private readonly repository: Repository<T>) {}

  findOne(options: FindOneOptions<T>): Promise<T | null> {
    return this.repository.findOne(options);
  }

  insert(entity: Partial<T>): ReturnType<Repository<T>["insert"]> {
    return this.repository.insert(entity);
  }
}
