feat(MED-131): sync analysis results in job handler
This commit is contained in:
23
app/api/job/handler/sync-analysis-results.ts
Normal file
23
app/api/job/handler/sync-analysis-results.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import { readPrivateMessageResponse } from "~/lib/services/medipost.service";
|
||||||
|
|
||||||
|
export default async function syncAnalysisResults() {
|
||||||
|
console.info("Syncing analysis results");
|
||||||
|
|
||||||
|
const excludedMessageIds: string[] = [];
|
||||||
|
while (true) {
|
||||||
|
console.info("Fetching private messages");
|
||||||
|
const { messageIdErrored } = await readPrivateMessageResponse({ excludedMessageIds });
|
||||||
|
if (!messageIdErrored) {
|
||||||
|
console.info("No more messages to process");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (excludedMessageIds.includes(messageIdErrored)) {
|
||||||
|
console.info(`Message id=${messageIdErrored} has already been processed, stopping`);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.info(`Message id=${messageIdErrored} has no response yet, skipping`);
|
||||||
|
excludedMessageIds.push(messageIdErrored);
|
||||||
|
}
|
||||||
|
}
|
||||||
27
app/api/job/sync-analysis-results/route.ts
Normal file
27
app/api/job/sync-analysis-results/route.ts
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
|
import loadEnv from "../handler/load-env";
|
||||||
|
import validateApiKey from "../handler/validate-api-key";
|
||||||
|
import syncAnalysisResults from "../handler/sync-analysis-results";
|
||||||
|
|
||||||
|
export const POST = async (request: NextRequest) => {
|
||||||
|
loadEnv();
|
||||||
|
|
||||||
|
try {
|
||||||
|
validateApiKey(request);
|
||||||
|
} catch (e) {
|
||||||
|
return NextResponse.json({}, { status: 401, statusText: 'Unauthorized' });
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
await syncAnalysisResults();
|
||||||
|
console.info("Successfully synced analysis results");
|
||||||
|
return NextResponse.json({
|
||||||
|
message: 'Successfully synced analysis results',
|
||||||
|
}, { status: 200 });
|
||||||
|
} catch (e) {
|
||||||
|
console.error("Error syncing analysis results", e);
|
||||||
|
return NextResponse.json({
|
||||||
|
message: 'Failed to sync analysis results',
|
||||||
|
}, { status: 500 });
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user