Port bun-mariadb schema guard, targetId fix, lazy init and tests
- schema: add --dry-run (sync in a rolled-back transaction) and require confirmation (or --yes) before dropping tables or columns; unapproved destructive changes are refused - only rebuild tables whose CREATE TABLE statement changed - always AND targetId with the query, regardless of searchOperator - empty IN / NOT IN lists become 1 = 0 / 1 = 1 - initialize lazily on first call so importing never throws - read CLI version from package.json, chmod CLI on compile, pin @types/bun - add SQL generator, value and schema guard tests Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -32,6 +32,7 @@ A schema-driven SQLite manager for [Bun](https://bun.sh), featuring automatic sc
|
||||
- [TypeScript Type Generation](#typescript-type-generation)
|
||||
- [Default Fields](#default-fields)
|
||||
- [Project Structure](#project-structure)
|
||||
- [Testing](#testing)
|
||||
|
||||
---
|
||||
|
||||
@@ -272,6 +273,8 @@ bunx bun-sqlite schema [options]
|
||||
| ----------------- | ---------------------------------------------------------- |
|
||||
| `-v`, `--vector` | Drop and recreate all vector (`sqlite-vec`) virtual tables |
|
||||
| `-t`, `--typedef` | Also generate TypeScript type definitions after syncing |
|
||||
| `--dry-run` | Print the planned schema changes without applying them |
|
||||
| `-y`, `--yes` | Apply destructive changes (dropped tables / columns) without confirmation |
|
||||
|
||||
**Examples:**
|
||||
|
||||
@@ -284,8 +287,13 @@ bunx bun-sqlite schema --typedef
|
||||
|
||||
# Sync schema, recreate vector tables, and regenerate types
|
||||
bunx bun-sqlite schema --vector --typedef
|
||||
|
||||
# Review planned changes first
|
||||
bunx bun-sqlite schema --dry-run
|
||||
```
|
||||
|
||||
Only tables whose definition changed are rebuilt. Changes that discard data (dropping a table, or a column removed from the schema) are listed and need confirmation before they run. Non-interactive runs (CI, scripts) refuse them unless `--yes` is passed. The plan is exact: `--dry-run` runs the whole sync in a transaction and rolls it back.
|
||||
|
||||
### `typedef` — Generate TypeScript types only
|
||||
|
||||
```bash
|
||||
@@ -844,6 +852,16 @@ bun-sqlite/
|
||||
|
||||
---
|
||||
|
||||
## Testing
|
||||
|
||||
```bash
|
||||
bun run test
|
||||
```
|
||||
|
||||
Runs the unit tests (`tests/`) and the schema sync tests (`src/lib/schema/*.test.ts`) against in-memory SQLite databases. No setup needed.
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
Reference in New Issue
Block a user