
# 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>`, motorların açıldığı depolama köküdür; `StorageRoot::resolve()` tarafından döndürülen yol, yani temel dizin ile ad alanının birleşimidir. `StorageRoot::resolve(__DIR__ . '/var/storh', 'app')` altında açılan bir store, `var/storh/app` altında bulunur:

```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
```

Yalnızca temel dizini (`var/storh`) geçirmek, komutları henüz var olmayan bir koleksiyona yönlendirir; bu nedenle hata vermek yerine boş bir koleksiyon bildirirler.

`vendor/bin/storh`, storh bir bağımlılık olarak yüklendiğinde storh 0.5.2 veya sonraki bir sürümü gerektirir. Önceki sürümler yalnızca paketin kendi `vendor/` dizinindeki Composer otomatik yükleyicisini arıyor ve `require` hatası veriyordu.

CLI, JSON çıktısını kararlı biçimde yazar; böylece cron işleri ve dağıtım sağlık denetimlerinde kullanılabilir. Koleksiyon varsayılan olarak `default` değerini, motor ise `stats`, `verify` ve `reindex` için `doc`; `compact` için `log` değerini kullanır.

## Komutların kullandığı bakım metotları

Tüm motorlar, CLI öğesinin kullandığı bakım metotlarını sunar:

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

DocStore şunları ekler:

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

SegmentedLog şunları ekler:

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

DocStore için `verify()`, kayıtların hatasız ayrıştırıldığını ve eşitlik, aralık ve birleşik dizinlerin tüm kayıtların taranmasıyla eşleştiğini denetler. `repair()`, bozuk kayıt dosyalarını `.storh/corrupt/` altına karantinaya alır ve geçerli kayıtlardan dizinleri yeniden oluşturur.

SegmentedLog için `verify()`, bölüm satırlarının kodunu çözer ve geçerli türetilmiş durum dizinini yeni bir bölüm tekrar oynatımıyla karşılaştırır. `repair()` türetilmiş durumu yeniden oluşturur ve sondaki yarım kalmış satırları keser.

Queue için `verify()` kalıcı her olayın kodunu çözer ve bekleyen, işlenen, tamamlanan, yük ve talep sırası durumlarını yeni bir `queue.log` tekrar oynatımıyla karşılaştırır. `repair()` kuyruk durumunu günlükten yeniden oluşturur ve zaman aşımına uğrayan işlenen işleri kuyruğa yeniden ekler.
