58 lines
1.4 KiB
TypeScript
Executable File
58 lines
1.4 KiB
TypeScript
Executable File
import { ArtworksSearchResult } from "./ArtworkSearchResult";
|
|
|
|
export class ArtworkSearchResultCollection {
|
|
private _results: Map<string, ArtworksSearchResult> = new Map();
|
|
|
|
public get isEmpty(): boolean {
|
|
const emptySize = 0;
|
|
|
|
return this._results.size === emptySize;
|
|
}
|
|
|
|
public get results(): Array<ArtworksSearchResult> {
|
|
const results = new Array<ArtworksSearchResult>();
|
|
|
|
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<any>): Array<ArtworksSearchResult> {
|
|
const addedResults: Array<ArtworksSearchResult> = [];
|
|
|
|
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;
|
|
}
|
|
}
|