diff --git a/.github/workflows/ci-test-unit.yml b/.github/workflows/ci-test-unit.yml index bb5644f..e828668 100644 --- a/.github/workflows/ci-test-unit.yml +++ b/.github/workflows/ci-test-unit.yml @@ -25,6 +25,8 @@ jobs: CACHING_DATABASE_URL: "https://test.supabase.com" DATA_DATABASE_URL: "https://test.supabase.com" + ENABLE_CRON_JOBS: "false" + permissions: # Required to checkout the code contents: read diff --git a/src/controllers/MarketplaceController.ts b/src/controllers/MarketplaceController.ts index 70570e2..7397d47 100644 --- a/src/controllers/MarketplaceController.ts +++ b/src/controllers/MarketplaceController.ts @@ -24,6 +24,7 @@ import type { import { inject, injectable } from "tsyringe"; import { FractionService } from "../services/database/entities/FractionEntityService.js"; import { MarketplaceOrdersService } from "../services/database/entities/MarketplaceOrdersEntityService.js"; +import { InvalidOrder } from "../lib/marketplace/errors.js"; @injectable() @Route("v2/marketplace") @@ -114,6 +115,7 @@ export class MarketplaceController extends Controller { success: false, message: "Error processing order", error: error instanceof Error ? error.message : String(error), + ...(error instanceof InvalidOrder ? { result: error.errors } : {}), }; } } diff --git a/src/index.ts b/src/index.ts index 1c333f1..18279c4 100644 --- a/src/index.ts +++ b/src/index.ts @@ -11,6 +11,7 @@ import * as Sentry from "@sentry/node"; import SignatureRequestProcessorCron from "./cron/SignatureRequestProcessing.js"; import OrderInvalidationCronjob from "./cron/OrderInvalidation.js"; import { container } from "tsyringe"; +import { ENABLE_CRON_JOBS } from "./utils/constants.js"; // @ts-expect-error BigInt is not supported by JSON BigInt.prototype.toJSON = function () { @@ -47,9 +48,14 @@ RegisterRoutes(app); Sentry.setupExpressErrorHandler(app); // Start Safe signature request processing cron job -SignatureRequestProcessorCron.start(); -const cronJob = container.resolve(OrderInvalidationCronjob); -cronJob.start(); +if (ENABLE_CRON_JOBS) { + console.log("🚀 Starting cron jobs"); + SignatureRequestProcessorCron.start(); + const cronJob = container.resolve(OrderInvalidationCronjob); + cronJob.start(); +} else { + console.log("🚨 Cron jobs are disabled"); +} app.listen(PORT, () => { console.log( diff --git a/src/utils/constants.ts b/src/utils/constants.ts index 9b981ef..4541838 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -20,3 +20,6 @@ export const drpcApiPkey = getRequiredEnvVar("DRPC_API_KEY"); export const cachingDatabaseUrl = getRequiredEnvVar("CACHING_DATABASE_URL"); export const dataDatabaseUrl = getRequiredEnvVar("DATA_DATABASE_URL"); export const filecoinApiKey = getRequiredEnvVar("FILECOIN_API_KEY"); + +const ENABLE_CRON_JOBS_ENV = getRequiredEnvVar("ENABLE_CRON_JOBS"); +export const ENABLE_CRON_JOBS = ENABLE_CRON_JOBS_ENV === "true";