A lightweight utility to automatically generate TypeScript types from SQLite database schemas. Helps maintain type safety between your database and TypeScript code.
- 🚀 Automatic type generation from SQLite schemas
- 💪 TypeScript support
- 🎯 Handles nullable columns
- 🛠 Both CLI and programmatic API
- 📝 Configurable type namespace
npm install -D @ryanflorence/sqlite-typegen
The command-line interface provides a simple way to generate types from your SQLite database:
sqlite-typegen <database-path> [options]
-o, --out <path>
- Write output to a file instead of stdout-n, --namespace <name>
- Custom namespace for generated types (default: "DB")-h, --help
- Show help message
Generate types and output to console:
sqlite-typegen ./database.sqlite
Generate types and save to file:
sqlite-typegen ./database.sqlite -o src/types/db.ts
Use custom namespace:
sqlite-typegen ./database.sqlite -n MyDatabase -o types.ts
You can also use the type generator programmatically in your code:
import { generate } from "sqlite-typegen";
// Generate types as a string
let types = generate("./database.sqlite", "MyDB");
// Now you can do whatever you want with the generated types
console.log(types);
fs.writeFileSync("types.ts", types);
Generates TypeScript types from a SQLite database schema.
dbPath
: Path to your SQLite database filenamespace
: Optional name for the generated type namespace (default: "DB")- Returns: String containing the generated TypeScript types
SQLite types are mapped to TypeScript types as follows:
SQLite Type | TypeScript Type |
---|---|
INTEGER | number |
REAL | number |
TEXT | string |
BLOB | Buffer |
BOOLEAN | boolean |
DATETIME | Date |
NUMERIC | number |
VARCHAR | string |
CHAR | string |
For a database with a users
table, the generated types might look like:
export namespace SQLiteSchema {
export type users = {
id: number;
name: string;
email: string;
created_at?: Date; // nullable columns become optional
};
}
MIT
Contributions are welcome! Please feel free to submit a Pull Request.