Paradaux
IssuesPAR-169Planned
0

chestshop_shop backfill + resync support (registry is lazy — untouched shops are absent)

Part of PAR-166 (spin out /find). Migration-blocking data-completeness gap.

chestshop_shop is populated lazilyMarketListener only upserts on ShopCreated/Transaction/InventoryClose. There is no chunk-scan resync writing to MarketApi, so every pre-existing shop that hasn't been touched since the hook went live is missing from the registry. The legacy plugin has /csdb resync precisely to index all existing shops, so at cutover Treasury's view is incomplete.

Do:

  1. One-time backfill from the legacy chestshop-database Shop table → chestshop_shop (map world UUID→name, owner_name→structured owner via Treasury/Business lookup, estimated_capacity/visible/hologram once those columns exist). Idempotent on the uq_shop_location unique key.
  2. Resync API support — ensure MarketApi.upsertShop is safe to call in bulk from an authoritative scan (idempotent upsert, no duplicate rows, sane last_seen/stock_at). The admin /find resync command that drives the scan lives in the new plugin (sub-issue of PAR-166); this issue is the importer + the idempotent write path it depends on.

Acceptance: after backfill, the count/contents of chestshop_shop (active shops) matches the legacy Shop table; a second run is a no-op.

Comments

No comments yet.

Activity

  • tesks changed status to Status → PlannedJun 15, 2026, 12:33 AM
  • tesks created the issueJun 14, 2026, 11:06 PM