
# 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>` on tallennusjuuri, jolla moottorit avattiin; se on polku, jonka `StorageRoot::resolve()` palauttaa: perushakemisto sekä nimiavaruus. Kohteessa `StorageRoot::resolve(__DIR__ . '/var/storh', 'app')` avattu tallennus sijaitsee kohteessa
`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
```

Pelkkä perushakemisto (`var/storh`) osoittaa komennot kokoelmaan, jota ei vielä ole olemassa, joten ne ilmoittavat tyhjän kokoelman virheen sijaan.

`vendor/bin/storh` tarvitsee version storh 0.5.2 tai uudemman, jos storh on asennettu riippuvuutena. Aiemmat versiot etsivät Composer-autoloaderia vain paketin omasta `vendor/`-hakemistosta ja epäonnistuivat virheeseen `require`.

CLI tulostaa vakaan JSON-tuloksen, jota voidaan käyttää cron-töissä ja käyttöönoton terveystarkistuksissa. Kokoelman oletusarvo on `default`; moottorin oletusarvo on `doc` kohteille `stats`, `verify` ja `reindex` sekä `log` kohteelle `compact`.

## Komentojen taustalla olevat ylläpitomenetelmät

Kaikki moottorit tarjoavat ylläpitomenetelmät, joita CLI käyttää:

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

DocStore lisää:

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

SegmentedLog lisää:

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

DocStore-tapauksessa `verify()` tarkistaa, että tietueet jäsentyvät ongelmitta ja että yhtäsuuruus-, alue- ja yhdistelmäindeksit vastaavat kaikkien tietueiden läpikäyntiä. `repair()` eristää vioittuneet tietuetiedostot hakemistoon `.storh/corrupt/` ja rakentaa indeksit uudelleen kelvollisista tietueista.

SegmentedLog-tapauksessa `verify()` purkaa segmenttirivit ja vertaa nykyistä johdettua tilaindeksiä segmenttien uuteen läpikäyntiin. `repair()` rakentaa johdetun tilan uudelleen ja katkaisee keskeneräiset loppurivit.

Queue-jonossa `verify()` purkaa jokaisen pysyvän tapahtuman ja vertaa odottavien, käsittelyssä olevien ja valmiiden tehtävien tilaa, hyötykuormaa ja varausjärjestystä uuteen `queue.log`-toistoon. `repair()` rakentaa jonon tilan uudelleen lokista ja palauttaa aikakatkaistut käsittelyssä olevat tehtävät jonoon.
