Skip to content

Commit 21f1454

Browse files
committed
chore: allow querying status by query param
1 parent 5aee2a6 commit 21f1454

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

src/server/routes/index.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ import { getAllTransactions } from "./transaction/get-all";
104104
import { getAllDeployedContracts } from "./transaction/get-all-deployed-contracts";
105105
import { retryTransaction } from "./transaction/retry";
106106
import { retryFailedTransactionRoute } from "./transaction/retry-failed";
107-
import { checkTxStatus } from "./transaction/status";
107+
import {
108+
getTransactionStatusQueryParamRoute,
109+
getTransactionStatusRoute,
110+
} from "./transaction/status";
108111
import { syncRetryTransactionRoute } from "./transaction/sync-retry";
109112
import { createWebhookRoute } from "./webhooks/create";
110113
import { getWebhooksEventTypes } from "./webhooks/events";
@@ -239,7 +242,8 @@ export async function withRoutes(fastify: FastifyInstance) {
239242

240243
// Transactions
241244
await fastify.register(getAllTransactions);
242-
await fastify.register(checkTxStatus);
245+
await fastify.register(getTransactionStatusRoute);
246+
await fastify.register(getTransactionStatusQueryParamRoute);
243247
await fastify.register(getAllDeployedContracts);
244248
await fastify.register(retryTransaction);
245249
await fastify.register(syncRetryTransactionRoute);

src/server/routes/transaction/status.ts

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ responseBodySchema.example = {
6262
},
6363
};
6464

65-
export async function checkTxStatus(fastify: FastifyInstance) {
65+
export async function getTransactionStatusRoute(fastify: FastifyInstance) {
6666
fastify.route<{
6767
Params: Static<typeof requestSchema>;
6868
Reply: Static<typeof responseBodySchema>;
@@ -135,3 +135,50 @@ export async function checkTxStatus(fastify: FastifyInstance) {
135135
},
136136
});
137137
}
138+
139+
// An alterate route that accepts the queueId as a query param.
140+
export async function getTransactionStatusQueryParamRoute(
141+
fastify: FastifyInstance,
142+
) {
143+
fastify.route<{
144+
Querystring: Static<typeof requestSchema>;
145+
Reply: Static<typeof responseBodySchema>;
146+
}>({
147+
method: "GET",
148+
url: "/transaction/status",
149+
schema: {
150+
summary: "Get transaction status",
151+
description: "Get the status for a transaction request.",
152+
tags: ["Transaction"],
153+
operationId: "status",
154+
querystring: requestSchema,
155+
response: {
156+
...standardResponseSchema,
157+
[StatusCodes.OK]: responseBodySchema,
158+
},
159+
},
160+
handler: async (request, reply) => {
161+
const { queueId } = request.query;
162+
if (!queueId) {
163+
throw createCustomError(
164+
"Queue ID is required.",
165+
StatusCodes.BAD_REQUEST,
166+
"QUEUE_ID_REQUIRED",
167+
);
168+
}
169+
170+
const transaction = await TransactionDB.get(queueId);
171+
if (!transaction) {
172+
throw createCustomError(
173+
"Transaction not found.",
174+
StatusCodes.BAD_REQUEST,
175+
"TRANSACTION_NOT_FOUND",
176+
);
177+
}
178+
179+
reply.status(StatusCodes.OK).send({
180+
result: toTransactionSchema(transaction),
181+
});
182+
},
183+
});
184+
}

0 commit comments

Comments
 (0)