Task: Verify and fix currency CLI commands
Table of Contents
This page documents a task in the Commission: currency story. It captures the goal, current status, acceptance, and any notes or results.
Goal
Ensure all three CLI subcommands for currency (list, add, remove) are implemented and
working against the live service post-NATS migration. The appraisal confirmed only the
add options struct; list and remove may need implementation. Run each command and confirm
correct output.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Commission: currency |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | None. |
| Last touched | 2026-05-29 |
Acceptance
listsubcommand exists, runs, and returns records from the live service.addsubcommand exists, runs, and creates a record.removesubcommand exists, runs, and removes a record.- All subcommands use NATS-based service (no direct DB access).
- Any regressions found are fixed or filed as captures.
- Findings recorded in
* Resultsection. - Site builds cleanly.
PRs
| PR | Title |
|---|---|
| #1027 | [ores.qt,ores.refdata] Commission currency Qt: fix plugin placement, icons, timestamps |
Review
| # | Comment summary | File | Decision | Notes |
|---|---|---|---|---|
| 1 | Now field should describe blocked state, not 'Nothing.' | story.org | Fixed in 6b75cdb8e | PR #932 round 1 |
Result
Currency CLI
Static analysis of projects/ores.cli/. All five operations are implemented and wired:
| Operation | Command | Status | Notes |
|---|---|---|---|
| List | currencies list |
✓ | Routes through export_currencies() with table/JSON format |
| Add | currencies add |
✓ | Full options: iso-code, name, numeric-code, symbol, fractions, rounding-type, monetary-nature, market-tier |
| Remove | currencies delete |
✓ | Deletes by ISO code via delete_currency() |
| Import | currencies import |
✓ | Bulk import from ORE XML files |
| Export | currencies export |
✓ | Export to XML, JSON, CSV |
All operations live in src/app/application.cpp; parsing is in
src/config/entity_parsers/currencies_parser.cpp.
entity::currencies is registered in the entity enum.
Correction to appraisal finding: The appraisal reported "only add options found;
list/remove uncertain." Static analysis confirms all five operations exist and are fully
wired. The appraisal was conservative.
NATS gap (cross-cutting)
The CLI uses database::context (direct DB via currency_repository) for all
operations — identical to country and every other CLI entity. This is the pre-NATS
pattern across the entire CLI layer. The acceptance criterion "all subcommands use
NATS-based service" is aspirational; it has never been met by any entity in the CLI.
Filed as a capture: CLI layer NATS migration is a future cross-cutting task.
Auxiliary types
rounding_type, monetary_nature, and currency_market_tier are not registered in
config::entity enum and have no parser. The CLI coverage matrix entries for these
entities correctly show N. Implementing CLI support for auxiliary types is out of
scope for this task and deferred to a future sprint.
Live verification
Live verification (running commands against a connected service) was not performed in this session — requires a running environment. The static analysis confirms the implementation is structurally correct and consistent with all other commissioned entities.