Skip to content

Release: develop -> main#3968

Merged
davidleomay merged 1 commit into
mainfrom
develop
Jun 25, 2026
Merged

Release: develop -> main#3968
davidleomay merged 1 commit into
mainfrom
develop

Conversation

@github-actions

Copy link
Copy Markdown

Automatic Release PR

This PR was automatically created after changes were pushed to develop.

Commits: 1 new commit(s)

Checklist

  • Review all changes
  • Verify CI passes
  • Approve and merge when ready for production

…stgres) (#3954)

* fix(api): quote camelCase identifiers + ParseIntPipe on route :id (Postgres)

Fixes a class of HTTP 500s introduced by the MySQL->Postgres migration.
Postgres folds unquoted identifiers to lowercase and is stricter on
function signatures, so raw-SQL fragments that worked on MySQL now error.

- buy/sell/swap controllers: add ParseIntPipe to the route `:id` handlers
  (get/update/history). A non-numeric `:id` made `+id` -> NaN, bound as an
  integer param -> `invalid input syntax for type integer: "NaN"` 500.
  Now rejects with 400 instead.
- support-issue, deposit-route, bank-data, payment-link-payment: quote the
  camelCase aliases/columns in raw query fragments (`"userData"`,
  `"issueId"`, `"userDataId"`, `"linkId"`, `"maxId"`,
  `"organizationName"`, `"paymentLinksConfig"`) so they resolve instead of
  folding to lowercase (`missing FROM-clause entry`, `column ... does not exist`).
- ref-reward: cast `ROUND(SUM(...)::numeric, 0)` — Postgres has no
  `round(double precision, integer)` overload.

* test(api): regression guards for the Postgres identifier-quoting fixes

Static guards (same fs+regex style as query-builder-alias.spec.ts) asserting the
exact unquoted identifiers that erred in prod can't silently come back. The
sibling alias scanner passed on the broken code because its "alias.column =
auto-quoted" heuristic is false for raw FROM/.update()/subquery aliases — these
pin those specific sites. Verified each regex matches the unquoted form and not
the quoted form, so a revert re-fails the test.

* fix(docker): copy ./assets into runtime image for OCP stickers

OCPStickerService reads sticker PNGs via
join(process.cwd(), 'assets', ...) at runtime, but the runtime stage of
the multi-stage build never copied that directory. Sticker PDF
generation failed in containers with ENOENT on
assets/ocp-classic-sticker.png and the language variants.

Same pattern as the existing src/shared/i18n and notification/templates
COPYs: ship the source assets next to dist/.

---------

Co-authored-by: David May <david.leo.may@gmail.com>
@davidleomay davidleomay merged commit 6e240c2 into main Jun 25, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants