import { RunStatus } from "@superglue/shared";
export function parsePaginationParams(query: { page?: string; limit?: string }): {
page: number;
limit: number;
offset: number;
} {
const page = Math.max(1, parseInt(query.page || "1", 10) || 1);
const limit = Math.min(100, Math.max(1, parseInt(query.limit || "50", 10) || 50));
const offset = (page - 1) * limit;
return { page, limit, offset };
}
export function mapRunStatusToOpenAPI(
status: RunStatus,
): "running" | "success" | "failed" | "aborted" {
const statusMap: Record<RunStatus, "running" | "success" | "failed" | "aborted"> = {
[RunStatus.RUNNING]: "running",
[RunStatus.SUCCESS]: "success",
[RunStatus.FAILED]: "failed",
[RunStatus.ABORTED]: "aborted",
};
return statusMap[status] || "failed";
}
export function mapOpenAPIStatusToInternal(status: string): RunStatus | undefined {
const statusMap: Record<string, RunStatus> = {
running: RunStatus.RUNNING,
success: RunStatus.SUCCESS,
failed: RunStatus.FAILED,
aborted: RunStatus.ABORTED,
};
return statusMap[status.toLowerCase()];
}
export function sendError(reply: any, statusCode: number, message: string) {
return reply.code(statusCode).header("X-Trace-Id", reply.request.traceId).send({
error: { message },
});
}
export function addTraceHeader(reply: any, traceId?: string) {
if (traceId) {
reply.header("X-Trace-Id", traceId);
}
return reply;
}