@clearcms/index
v0.2.3
Published
DB-rebuilder for clear. Walks a bucket and reconstructs the libSQL index from the JSON files inside. Used by `clear-admin reindex` and the admin's failsafe boot path.
Downloads
796
Readme
@clearcms/index
DB-rebuilder for the clear content protocol. Walks a clear bucket and
reconstructs the libSQL items_index + item_revisions rows from the JSON
files inside.
Why
Files = source of truth. The DB is a derived index. If you rsync a bucket between machines, restore a backup, or edit files outside the admin, the admin auto-heals on next boot — but to do that, something has to walk the bucket and rebuild the rows.
That's this package.
Usage
import { rebuild } from '@clearcms/index';
const result = await rebuild({
bucketRoot: '/home/ms/clear/markonian/bucket',
databaseUrl: 'file:/home/ms/clear/markonian/clear.db',
mode: 'full', // 'full' wipes items + revisions + drafts and re-derives them
// mode: 'incremental' upserts only — leaves rows the bucket doesn't know about alone
});
// result: { itemsScanned, itemsWritten, revisionsScanned, revisionsWritten, errors, durationMs }What's in scope
collections/<type>/<locale>/<slug>.json→items_indexrow (status='published')drafts/<type>/<locale>/<slug>.json→items_indexrow (status='draft')trash/<type>/<locale>/<slug>.json→items_indexrow withdeletedAtsetrevisions/<type>/<locale>/<slug>/<ISO>-<author>.json→item_revisionsrow
What's NOT in scope
- Collection / field schemas — these live in the DB only today; full mode
intentionally does not wipe
collections,fields,settings,members,sessions,api_tokens. A bucket-resident manifest format is out of scope for v0. - Globals (
content/globals/*.json) — served directly off the bucket; no derived index. - Media (
media/*) — already indexed in themediatable elsewhere.
CLI
clear-admin reindex [--mode=full|incremental] [--collection=<slug>] [--dry-run]Inputs come from env vars (CLEAR_STORAGE_ROOT, CLEAR_DB_URL); see
clear-admin --help.
