From 386b1d8e1a36b119fb1229f4f2bcf1ddd31f3744 Mon Sep 17 00:00:00 2001 From: Dotta Date: Tue, 19 May 2026 14:52:30 -0500 Subject: [PATCH] Address runtime PR review feedback Co-Authored-By: Paperclip --- packages/db/src/backup-lib.test.ts | 4 ++-- packages/db/src/backup-lib.ts | 2 +- server/src/middleware/error-handler.ts | 3 ++- server/src/routes/companies.ts | 3 ++- server/src/routes/company-import-paths.ts | 2 ++ ui/src/pages/Issues.tsx | 2 -- 6 files changed, 9 insertions(+), 7 deletions(-) create mode 100644 server/src/routes/company-import-paths.ts diff --git a/packages/db/src/backup-lib.test.ts b/packages/db/src/backup-lib.test.ts index 10d217e2bbc..5cabb4d0be2 100644 --- a/packages/db/src/backup-lib.test.ts +++ b/packages/db/src/backup-lib.test.ts @@ -352,7 +352,7 @@ describeEmbeddedPostgres("runDatabaseBackup", () => { '11111111-1111-4111-8111-111111111111', '22222222-2222-4222-8222-222222222222', 'signal', - ARRAY['upstream_import:preview', 'scope with space', 'quoted "scope"'], + ARRAY['upstream_import:preview', 'scope with space', 'quoted "scope"', 'NULL', 'null'], jsonb_build_array('json warning', jsonb_build_object('code', 'quoted "value"')) ); `); @@ -386,7 +386,7 @@ describeEmbeddedPostgres("runDatabaseBackup", () => { { signal: "signal", title: "case", - scopes: ["upstream_import:preview", "scope with space", 'quoted "scope"'], + scopes: ["upstream_import:preview", "scope with space", 'quoted "scope"', "NULL", "null"], warnings: ["json warning", { code: 'quoted "value"' }], }, ]); diff --git a/packages/db/src/backup-lib.ts b/packages/db/src/backup-lib.ts index 7a278b60935..02dc168bdb3 100644 --- a/packages/db/src/backup-lib.ts +++ b/packages/db/src/backup-lib.ts @@ -257,7 +257,7 @@ function formatPostgresArrayElement(value: unknown): string { : typeof value === "object" ? JSON.stringify(value) : String(value); - if (raw.length === 0 || /[{}\s,"\\]/.test(raw)) { + if (raw.length === 0 || /^null$/i.test(raw) || /[{}\s,"\\]/.test(raw)) { return `"${raw.replaceAll("\\", "\\\\").replaceAll('"', '\\"')}"`; } return raw; diff --git a/server/src/middleware/error-handler.ts b/server/src/middleware/error-handler.ts index a25c8b0c43e..c455cbad950 100644 --- a/server/src/middleware/error-handler.ts +++ b/server/src/middleware/error-handler.ts @@ -3,6 +3,7 @@ import { ZodError } from "zod"; import { HttpError } from "../errors.js"; import { trackErrorHandlerCrash } from "@paperclipai/shared/telemetry"; import { getTelemetryClient } from "../telemetry.js"; +import { COMPANY_IMPORT_API_PATH } from "../routes/company-import-paths.js"; export interface ErrorContext { error: { message: string; stack?: string; name?: string; details?: unknown; raw?: unknown }; @@ -83,5 +84,5 @@ export function errorHandler( function shouldExposeTrustedCloudTenantImportError(req: Request) { return req.actor?.source === "cloud_tenant" && req.method === "POST" - && req.originalUrl.split("?")[0] === "/api/companies/import"; + && req.originalUrl.split("?")[0] === COMPANY_IMPORT_API_PATH; } diff --git a/server/src/routes/companies.ts b/server/src/routes/companies.ts index 6516e5efb51..96a004ac039 100644 --- a/server/src/routes/companies.ts +++ b/server/src/routes/companies.ts @@ -25,6 +25,7 @@ import { } from "../services/index.js"; import type { StorageService } from "../storage/types.js"; import { assertBoard, assertCompanyAccess, assertInstanceAdmin, getActorInfo } from "./authz.js"; +import { COMPANY_IMPORT_ROUTE_PATH } from "./company-import-paths.js"; export function companyRoutes(db: Db, storage?: StorageService) { const router = Router(); @@ -176,7 +177,7 @@ export function companyRoutes(db: Db, storage?: StorageService) { res.json(preview); }); - router.post("/import", validate(companyPortabilityImportSchema), async (req, res) => { + router.post(COMPANY_IMPORT_ROUTE_PATH, validate(companyPortabilityImportSchema), async (req, res) => { assertBoard(req); assertImportTargetAccess(req, req.body.target); const actor = getActorInfo(req); diff --git a/server/src/routes/company-import-paths.ts b/server/src/routes/company-import-paths.ts new file mode 100644 index 00000000000..cf43490070a --- /dev/null +++ b/server/src/routes/company-import-paths.ts @@ -0,0 +1,2 @@ +export const COMPANY_IMPORT_ROUTE_PATH = "/import"; +export const COMPANY_IMPORT_API_PATH = `/api/companies${COMPANY_IMPORT_ROUTE_PATH}`; diff --git a/ui/src/pages/Issues.tsx b/ui/src/pages/Issues.tsx index 08273694162..c8be8cedce0 100644 --- a/ui/src/pages/Issues.tsx +++ b/ui/src/pages/Issues.tsx @@ -145,8 +145,6 @@ export function Issues() { includeRoutineExecutions: true, limit: issuePageSize, offset: pageParam, - sortField: "updated", - sortDir: "desc", }), initialPageParam: 0, getNextPageParam: (lastPage, _allPages, lastPageParam) =>