
# CLI

```bash
vendor/bin/storh stats <root> [collection] [doc|log|queue]
vendor/bin/storh verify <root> [collection] [doc|log|queue]
vendor/bin/storh compact <root> [collection] [doc|log]
vendor/bin/storh reindex <root> [collection]
```

`<root>` er lagerroden, som motorerne blev åbnet med, altså stien `StorageRoot::resolve()` returnerer: basismappen plus navnerummet. Et lager åbnet under `StorageRoot::resolve(__DIR__ . '/var/storh', 'app')` ligger under `var/storh/app`:

```bash
vendor/bin/storh stats var/storh/app pages doc
vendor/bin/storh verify var/storh/app events log
vendor/bin/storh compact var/storh/app events log
vendor/bin/storh reindex var/storh/app pages
```

Hvis du kun angiver basismappen (`var/storh`), peger kommandoerne på en samling, der endnu ikke findes, så de rapporterer en tom samling i stedet for at fejle.

`vendor/bin/storh` kræver storh 0.5.2 eller nyere, når storh er installeret som afhængighed. Tidligere versioner søgte kun efter Composer-autoloaderen i pakkens egen `vendor/`-mappe og fejlede med en `require`-fejl.

CLI udskriver stabile JSON, så den kan bruges fra cron-job og sundhedstjek ved udrulning. Samlingen er som standard `default`; motoren er som standard `doc` for `stats`, `verify` og `reindex`, og `log` for `compact`.

## Vedligeholdelsesmetoder bag kommandoerne

Alle motorer udstiller de vedligeholdelsesmetoder, som CLI styrer:

```php
$store->stats();
$store->health();
$store->verify();
$store->repair();
```

DocStore tilføjer:

```php
$docs->reindex();
$docs->compact(); // no-op report for API symmetry
```

SegmentedLog tilføjer:

```php
$log->compact();
$log->recover();
$log->state_index();
```

For DocStore kontrollerer `verify()`, at poster kan parses korrekt, og at ligheds-, område- og sammensatte indekser stemmer overens med en fuld scanning af posterne. `repair()` sætter korrupte postfiler i karantæne under `.storh/corrupt/` og genopbygger indekser ud fra gyldige poster.

For SegmentedLog afkoder `verify()` segmentlinjer og sammenligner det aktuelle afledte tilstandsindeks med en ny afspilning af segmenterne. `repair()` genopbygger den afledte tilstand og afkorter afbrudte afsluttende linjer.

For Queue afkoder `verify()` alle varige hændelser og sammenligner tilstandene for afventende, igangværende og færdige job, payload, samt rækkefølgen af claims med en ny afspilning af `queue.log`. `repair()` genopbygger køtilstanden fra loggen og sætter job, der har overskredet behandlingstiden, tilbage i køen.
