Skip to content

Latest commit

 

History

History
115 lines (79 loc) · 2.55 KB

README.md

File metadata and controls

115 lines (79 loc) · 2.55 KB

sqlite-typegen

A lightweight utility to automatically generate TypeScript types from SQLite database schemas. Helps maintain type safety between your database and TypeScript code.

Features

  • 🚀 Automatic type generation from SQLite schemas
  • 💪 TypeScript support
  • 🎯 Handles nullable columns
  • 🛠 Both CLI and programmatic API
  • 📝 Configurable type namespace

Installation

npm install -D @ryanflorence/sqlite-typegen

CLI Usage

The command-line interface provides a simple way to generate types from your SQLite database:

sqlite-typegen <database-path> [options]

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

Examples

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

Programmatic Usage

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);

API

generate(dbPath: string, namespace?: string): string

Generates TypeScript types from a SQLite database schema.

  • dbPath: Path to your SQLite database file
  • namespace: Optional name for the generated type namespace (default: "DB")
  • Returns: String containing the generated TypeScript types

Type Mappings

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

Example Output

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
  };
}

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.