Part of PAR-166 (spin out /find). Data-layer gap.
Legacy chestshop-database has a per-shop visible BOOLEAN so an owner can hide a shop from /find search results (independent of it being open/destroyed). Treasury's chestshop_shop only has active (destroyed-or-not) — there is no owner-controlled visibility.
Do:
visible TINYINT(1) NOT NULL DEFAULT 1 column to chestshop_shop via a new economy-schema V<n>__*.sql migration (do NOT edit V6).MarketApi.updateShopVisibility(world, x, y, z, boolean) method + mapper write path in ChestShopMarketMapper/MarketApiImpl.visible through ChestShopShopRecord so upsertShop preserves it (don't reset to default on restock/price-change upserts).visible (and let /api/v1/chestshop/shops filter on it) so the spun-out /find respects it.Note: distinct from active. active=0 = sign destroyed (kept for history); visible=0 = live shop the owner chose to hide.