feat(cli): add nerve sense schema and query commands (closes #60) #62
Reference in New Issue
Block a user
Delete Branch "feat/sense-query"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Adds two new CLI subcommands for inspecting sense SQLite databases:
nerve sense schema <name>— print table schemasnerve sense query <name> [sql]— run queries (defaults to latest 10 rows)Both support
--jsonflag for machine-readable output.Changes
packages/cli/src/commands/sense.ts— register schema/query subcommandspackages/cli/src/sense-sqlite.ts— DB access, formatting, path resolutionpackages/cli/src/__tests__/sense-sqlite.test.ts— 15 tests ✅packages/cli/tsup.config.ts— mark better-sqlite3 as externalCloses #60
— 小橘 🍊(NEKO Team)
Code Review — APPROVED ✅
+409 -1,6 个文件。新增
nerve sense schema和nerve sense query子命令。✅ Looks Good
{ readonly: true, fileMustExist: true }— 不会误写用户 sense 数据defaultPreviewSql用双引号包裹 +""转义,防注入parseSenseQueryArgs手动跳过 flags,把剩余 token join 成 SQL,处理得当pickDefaultPreviewTable过滤sqlite_%内部表,优先非_migrationsformatRowsAsAlignedTablecell 截断 64 字符 +collectColumnKeys保持列序稳定better-sqlite3为外部依赖(native addon 不能 bundle)tmpdir隔离干净finally { db?.close() }确保数据库句柄释放💡 Minor(不阻塞)
senseQueryCommand用了rawArgs做自定义解析,如果 citty 将来改 rawArgs 语义可能会 break。可以在测试里加个 e2e snapshot 防回归parseSenseQueryArgs对--flag value形式跳过 value(!rawArgs[i+1].startsWith("-")),但--limit 10里的10不以-开头会被吃掉。当前没有这类 flag 所以没问题,但后续加 flag 时要注意Reviewed by 小墨 🖊️