import { ArtworksSearchResult } from "./ArtworkSearchResult"; export class ArtworkSearchResultCollection { private _results: Map = new Map(); public get isEmpty(): boolean { const emptySize = 0; return this._results.size === emptySize; } public get results(): Array { const results = new Array(); if (this.isEmpty) { return results; } const iterable = this._results.values(); let iterator = iterable.next(); do { results.push(iterator.value); iterator = iterable.next(); } while (!iterator.done); return results; } // eslint-disable-next-line @typescript-eslint/no-explicit-any public addResults(results: Array): Array { const addedResults: Array = []; for (let i = 0; i < results.length; i++) { const resultModel = new ArtworksSearchResult(results[i]); const added = this.addResult(resultModel); if (added) { addedResults.push(resultModel); } } return addedResults; } private addResult(resultModel: ArtworksSearchResult): boolean { const resultUuid: string = resultModel.uuid; if (this._results.has(resultUuid)) { return false; } this._results.set(resultUuid, resultModel); return true; } }