• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

decentraland / marketplace-server / 30992053071 / 1
62%
main: 62%

Build:
DEFAULT BRANCH: main
Ran 05 Aug 2026 09:11AM UTC
Files 324
Run time 8s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

05 Aug 2026 09:09AM UTC coverage: 63.659% (+0.2%) from 63.45%
30992053071.1

push

github

web-flow
feat: sort, credit price range and working isOnSale=false on /v3/catalog/items (#382)

`GET /v3/catalog/items` is already the credit-aware full-catalog feed (every
item, listed or not, with a server-computed `priceCredits`) and already
accepts `creator`, so the Shop can read a creator's whole body of work from
it. Two things stopped it being usable as a browse feed:

1. NO ORDER BY AT ALL. `getItemsParams` never parsed `sortBy` and
   `getCatalogItemsQuery` never sorted. Verified against production — all
   four sorts returned the identical page. The dead sort dropdown was the
   visible symptom; the real hazard is that LIMIT/OFFSET over an unordered
   plan may return a row on two pages, or none. Every branch of the new
   `getCatalogItemsOrderByStatement` ends in `item.id ASC`, so each order is
   TOTAL, not merely deterministic.

2. NO CREDIT-DENOMINATED PRICE RANGE. `minPrice`/`maxPrice` are MANA wei;
   the Shop prices in credits. `minPriceCredits`/`maxPriceCredits` filter on
   the same server-computed expression the rows are priced by, so the filter
   and the displayed price can never disagree.

Not included, on purpose: the `isOnSale=false` fix and the item-name search
that started out in this branch. #383 landed both on main first, and its
versions are better — the COALESCE this branch wrapped the on-sale predicate
in guarded nothing (`available` and the minter flags are NOT NULL, so the
negation is already two-valued), and its ILIKE over the item name replaces a
whole-string trigram filter that scored a short query against a long
description below the threshold, making items unsearchable by their own name.
Where the two overlapped, main wins on every hunk.

Squashed into one signed commit: `main` requires signed commits and the
branch's original commit was unsigned, which is what left the PR BLOCKED with
CI green and the review approved. Same tree, verified byte-identical to the
merge it replaces.

1747 of 3272 branches covered (53.39%)

Branch coverage included in aggregate %.

6036 of 8954 relevant lines covered (67.41%)

12.99 hits per line

Source Files on job 30992053071.1
  • Tree
  • List 324
  • Changed 127
  • Source Changed 3
  • Coverage Changed 127
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 30992053071
  • 5d8384d9 on github
  • Prev Job for on main (#30962927969.1)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc