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