
# 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>` este rădăcina de stocare cu care au fost deschise motoarele, adică acea cale
pe care o returnează `StorageRoot::resolve()`: directorul de bază plus spațiul de nume. O stocare
deschisă sub `StorageRoot::resolve(__DIR__ . '/var/storh', 'app')` se află în
`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
```

Transmiterea doar a directorului de bază (`var/storh`) indică comenzilor o
colecție care încă nu există, astfel că acestea raportează o colecție goală în loc să eșueze.

`vendor/bin/storh` necesită storh 0.5.2 sau o versiune ulterioară când storh este instalat ca dependență. Versiunile anterioare căutau autoloaderul Composer doar în directorul `vendor/` propriu al pachetului și eșuau cu eroarea `require`.

CLI afișează valori JSON stabile, astfel încât poate fi folosit în sarcini cron și verificări de stare pentru implementare. Colecția implicită este `default`; motorul implicit este `doc` pentru `stats`, `verify` și `reindex`, iar pentru `compact` este `log`.

## Metodele de mentenanță din spatele comenzilor

Toate motoarele expun metodele de mentenanță apelate de CLI:

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

DocStore adaugă:

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

SegmentedLog adaugă:

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

Pentru DocStore, `verify()` verifică dacă înregistrările sunt analizate corect și dacă indexurile de egalitate, interval și compuse corespund unei scanări complete a înregistrărilor. `repair()` pune în carantină fișierele de înregistrare corupte în `.storh/corrupt/` și reconstruiește indexurile din înregistrările valide.

Pentru SegmentedLog, `verify()` decodează liniile segmentelor și compară indexul stării derivate curente cu o reluare nouă a segmentelor. `repair()` reconstruiește starea derivată și trunchiază liniile finale incomplete.

Pentru Queue, `verify()` decodează fiecare eveniment persistent și compară stările în așteptare, în procesare și finalizate, precum și starea payload-ului și a ordinii de preluare, cu o reluare nouă `queue.log`. `repair()` reconstruiește starea cozii din jurnal și repune în coadă sarcinile aflate în procesare al căror timp a expirat.
