# 資料庫指令

以 `kura add`、`kura list`、`kura edit` 與 `kura remove` 註冊、列出、重新命名與移除 KuraDB 資料庫。

## 新增資料庫

```bash
kura add my_docs
```

第一個 argument 會作為名稱。連續空白會轉成底線；空白結果會以狀態碼 2 拒絕。Command 也會拒絕已在 registry 中的名稱或已存在的目標目錄。

成功後會建立：

```text
~/.config/kuradb/my_docs/inbox/
~/Kura_my_docs -> ~/.config/kuradb/my_docs/inbox/
```

接著在 `db.json` 新增帶 UTC 建立時間的 entry，並印出目錄與連結路徑。執行中的 daemon 不會熱載入新資料庫，因此搜尋前必須重新啟動。

## 列出資料庫

```bash
kura list
```

每一行包含資料庫名稱與 UTC RFC 3339 建立時間，以 tab 分隔。空 registry 會印出 `(no registered db)`。

`kura list` 只讀 registry。若要查看執行中的 daemon 實際載入了哪些資料庫，請使用 [`GET /api/list`](/zh/api-reference#列出資料庫)；它會同時回傳 `registered` 與 `loaded` collection。

## 重新命名資料庫

```bash
kura edit my_docs my_archive
```

Command 以與 `add` 相同的方式清理兩個名稱，接著：

1. 新舊名稱相同時印出 `noop` 並結束。
2. 拒絕未註冊的舊名稱、已註冊的新名稱，或已存在的目標目錄。
3. 重新命名資料庫目錄。
4. 移除舊的 `~/Kura_<old>` symlink 並建立 `~/Kura_<new>`；symlink 失敗只會回報，不會中斷 rename。
5. 更新 registry entry。

Daemon 會保留啟動時建立的 database map，因此 rename 前應先停止 daemon，完成後再啟動。

## 移除資料庫

```bash
kura remove my_archive
```

移除前會印出 database directory 與 symlink，並要求輸入完全相同的 `yes`。其他 response 會印出 `aborted` 且不做任何變更。確認後會永久移除 database directory；home path 只有在 symlink 時才會刪除（該處若是一般檔案或目錄，會略過並印出警告），最後刪除 registry entry。

此 operation 會刪除權威 SQLite database。確認前請先備份需要的資料。
