Skip to content

Commit

Permalink
Updated POST /recon API
Browse files Browse the repository at this point in the history
  • Loading branch information
sahalali committed Apr 23, 2024
1 parent af1274d commit 2bdc83d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 27 deletions.
12 changes: 6 additions & 6 deletions src/controller/recon/recon.controller.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import { Body, Controller, Get, Post, Query } from "@nestjs/common";
import { ApiBody, ApiOperation, ApiQuery, ApiResponse, ApiTags } from "@nestjs/swagger";
import { ReconciliationQuery, ReconciliationResponse } from "../../dto";
import { ReconciliationResponse } from "../../dto";
import { ReconciliationService } from "../../service";
import { ReconciliationTypesEnum } from "../../enum";

@Controller()
@ApiTags("APIs")
Expand All @@ -18,10 +17,10 @@ export class ReconciliationController {
name: "queries",
description: "Queries",
required: false,
explode: false,
explode: false
})
async reconcileByQuery(
@Query("queries") rawQueries: string,
@Query("queries") rawQueries: string
): Promise<ReconciliationResponse[]> {
return await this._reconciliationService.reconcileByRawQueries(rawQueries);
}
Expand All @@ -30,9 +29,10 @@ export class ReconciliationController {
@ApiOperation({ summary: "Reconcile" })
@ApiResponse({ status: 200, type: ReconciliationResponse, isArray: true, description: "Reconciliation response" })
@ApiResponse({ status: 500, description: "Internal server error" })
@ApiBody({type: ReconciliationQuery, isArray: true})
@ApiBody({})

async reconcileByQueries(@Body() reconciliationRequest: any): Promise<ReconciliationResponse[]>{

async reconcileByQueries(@Body() reconciliationRequest: any): Promise<ReconciliationResponse[]> {
return await this._reconciliationService.reconcileByQueries(reconciliationRequest);
}

Expand Down
28 changes: 7 additions & 21 deletions src/service/recon/recon.service.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
import { Injectable } from "@nestjs/common";
import { ArtsdataService } from "../artsdata";
import { ReconciliationQuery, ReconciliationResponse } from "../../dto";
import { ManifestService } from "../manifest";
import { ReconciliationResponse } from "../../dto";

@Injectable()
export class ReconciliationService {

constructor(private readonly _artsdataService: ArtsdataService,
private readonly _manifestService: ManifestService
) {
private readonly _manifestService: ManifestService) {
}

async reconcileByRawQueries(rawQueries: string): Promise<any> {

if (!rawQueries) {
return this._manifestService.getServiceManifest();
}

const queries = JSON.parse(rawQueries);
return await this.reconcileByQueries(queries);
}

async reconcileByQueries(queries: any): Promise<any> {
let index = 0;
const results: any = {};
while (true) {
Expand All @@ -26,28 +28,12 @@ export class ReconciliationService {
if (!query) {
break;
}
const result =
const result: ReconciliationResponse[] =
await this._artsdataService.getReconciliationResult(query.query, query.type, query.limit);
results["q0"] = { result: result };
index++;
}
return results;
}

async reconcileByQueries(reconciliationRequest: ReconciliationQuery[]): Promise<ReconciliationResponse[]> {
const promises = reconciliationRequest.map(query =>
this._artsdataService.getReconciliationResult(query.query, query.type)
);

const results = (await Promise.all(promises)).flat();

const uniqueResults = results.filter((result, index, self) =>
index === self.findIndex((object) => (
object.id === result.id
))
);

return uniqueResults;
}

}

0 comments on commit 2bdc83d

Please sign in to comment.