What is SQL to better-sqlite3 Types Generator?
This tool converts SQL CREATE TABLE statements to TypeScript interfaces for better-sqlite3. It generates row types, a Database schema interface, and optional insert types and helper functions for type-safe SQLite access in Node.js.
How to Use
- Paste your SQL CREATE TABLE statements
- Configure type generation options
- Click "Generate" and copy the TypeScript types
- Use with better-sqlite3 for type-safe database access
Why Use This Tool?
Tips & Best Practices
- SQLite is typeless — INTEGER PRIMARY KEY is the auto-increment pattern
- better-sqlite3 stores booleans as 0/1 (INTEGER)
- Dates in SQLite are typically stored as TEXT (ISO 8601)
- Use DatabaseSchema as the type parameter: new Database<DatabaseSchema>()
Frequently Asked Questions
What is better-sqlite3?
better-sqlite3 is a synchronous SQLite3 driver for Node.js. It provides a simple, fast, and synchronous API for SQLite databases, making it ideal for Electron apps, CLIs, and server-side applications that need embedded database access.
How are SQLite types mapped to TypeScript?
SQLite has dynamic typing, but the tool maps based on declared types: INTEGER → number, TEXT → string, REAL → number, BLOB → Buffer, BOOLEAN → number (0/1), DATE/TIMESTAMP → string. Nullable columns get union types like string | null.
What is the DatabaseSchema interface?
DatabaseSchema maps table names to their row type interfaces. You can use it as the type parameter for better-sqlite3: new BetterSqlite3.Database<DatabaseSchema>() to get type-safe query results.
What are Insert types?
Insert types are variants of row types where auto-increment columns (INTEGER PRIMARY KEY) and columns with DEFAULT values are optional. This matches the data you actually need to provide for an INSERT statement.
Is my SQL data sent to a server?
No, all processing happens entirely in your browser. Your SQL schema never leaves your device.