feat: initial commit
This commit is contained in:
57
src/services/ArtworkSearch/ArtworkSearchResultCollection.ts
Executable file
57
src/services/ArtworkSearch/ArtworkSearchResultCollection.ts
Executable file
@@ -0,0 +1,57 @@
|
||||
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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user