
# 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>` je koreň úložiska, s ktorým boli otvorené nástroje, teda cesta, ktorú vracia `StorageRoot::resolve()`: základný adresár plus menný priestor. Úložisko otvorené pod `StorageRoot::resolve(__DIR__ . '/var/storh', 'app')` sa nachádza v `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
```

Zadaním samotného základného adresára (`var/storh`) nasmerujete príkazy na kolekciu, ktorá ešte neexistuje, takže namiesto zlyhania ohlásia prázdnu kolekciu.

`vendor/bin/storh` vyžaduje storh 0.5.2 alebo novšiu verziu, ak je storh nainštalované ako závislosť. Staršie verzie hľadali autoloader Composer iba vo vlastnom adresári balíka `vendor/` a skončili chybou `require`.

CLI vypisuje stabilné JSON, aby sa dal používať v úlohách cron a pri kontrolách stavu nasadenia. Predvolená kolekcia je `default`; predvolený nástroj je `doc` pre `stats`, `verify` a `reindex` a `log` pre `compact`.

## Metódy údržby, ktoré používajú príkazy

Všetky nástroje sprístupňujú metódy údržby, ktoré používa CLI:

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

DocStore pridáva:

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

SegmentedLog pridáva:

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

V prípade DocStore `verify()` kontroluje, či sa záznamy správne parsujú a či indexy rovnosti, rozsahu a zložené indexy zodpovedajú úplnému prechodu záznamov. `repair()` umiestni poškodené súbory záznamov do karantény v `.storh/corrupt/` a znova zostaví indexy z platných záznamov.

V prípade SegmentedLog `verify()` dekóduje riadky segmentov a porovná aktuálny odvodený stavový index s novým prehratím segmentov. `repair()` znova zostaví odvodený stav a skráti odrezané koncové riadky.

V prípade Queue `verify()` dekóduje každú trvalú udalosť a porovná stavy čakajúcich, spracúvaných a dokončených úloh, ich dátového obsahu a poradia nárokovania s novým prehratím `queue.log`. `repair()` obnoví stav frontu z logu a znova zaradí do frontu úlohy, ktorých čas spracovania vypršal.
