import { lineToCreateLineDto, ObjeniousLine } from "sim-shared/domain/objeniousLine.js"; import { ObjeniousLinesRepository } from "../infranstructure/ObjeniousLinesRepository.js"; import { ObjeniousOperationsRepository } from "sim-shared/infrastructure/ObjeniousOperationRepository.js"; export class TaskVolcadoLineas { constructor( private readonly linesRepository: ObjeniousLinesRepository, private readonly objeniousRepository: ObjeniousOperationsRepository ) { } private async saveLines(lines: ObjeniousLine[]) { const linesToCreate = lines.map(lineToCreateLineDto) let created: number[] = [] for (const line of linesToCreate) { // Si es lento pasar a Promise.all const res = await this.linesRepository.insertOrUpdate(line) if (res?.id != undefined) created.push(res.id) } } public async loadLines() { console.log("[i] Iniciando task de volcado de lineas de Objenious") // Carga todas las lineas en memoria, hay que comprobar que no se gaste demasiada const linesIterator = this.objeniousRepository.getLinesByStatusAPI({ pageSize: 100 }) let lines = await linesIterator.next() if (lines.value.error != undefined || lines.value.data == undefined) { console.error("[x] Error cargando las lineas a volcar", lines.value.error) return; } await this.saveLines(lines.value.data) while (!lines.done) { lines = await linesIterator.next() if (lines.value.error != undefined || lines.value.data == undefined) { console.error("[x] Error cargando las lineas a volcar", lines.value.error) return; } await this.saveLines(lines.value.data) } console.log("[i] Terminado task de volcado de lineas de Objenious") } }