HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Bun-sqlgen – Bunのためのタイプセーフな生SQL、ORM不要

Show HN: Bun-sqlgen – Type-safe raw SQL for Bun, no ORM (github.com)

17 pointsby ilbert8 コメント

要約

`bun-sqlgen`は、ORMを使用せずにBun環境でタイプセーフな生SQLクエリを可能にするツールです。スキーマに対してリアルタイムでクエリをチェックし、不正なカラム名やSQLエラーをビルド時に検出し、本番環境での障害を防ぎます。タグ付けされたクエリは呼び出し元で完全に型付けされ、null安全な結果を提供し、手書きの型定義やジェネリクスを不要にします。

全文翻訳

bun-sqlgen BunのためのタイプセーフなSQL、ORM不要 — 生のBun.sql、スキーマに対してライブチェックされます。クエリに名前をタグ付けすると — `sql.GetUser`...` — 完全に型付けされたnull安全な行が呼び出しサイトに直接現れます。ORMもジェネリクスも手書きの型も不要です。\n\nコード生成は、実際のPostgresまたはSQLiteデータベース(Docker不要)に対してすべてのクエリを計画し、不正なカラムや不正なSQLはビルドを失敗させ、本番環境ではありません — すべての保存時に再実行できるほど高速です。ランタイムは100% Bunネイティブのままです。\n\n`@ilbertt/bun-sqlgen`として公開されています — そのREADMEが完全なガイドです:両方のダイアレクト、null可能性のオーバーライド、トランザクション、および設定。\n\nインストール\n```\nbun add @ilbertt/bun-sqlgen\n```\n\nクイックスタート\nマイグレーションはスキーマの信頼できる情報源です — 任意のフォルダに配置してください:\n```sql\n-- db/migrations/0001_init.sql\nCREATE TABLE users (\n id bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY,\n email text NOT NULL,\n display_name text\n);\n```\n\nクライアントを`withTypes`でラップし、各クエリに名前をタグ付けします:\n```typescript\nimport { withTypes } from '@ilbertt/bun-sqlgen';\nimport { SQL } from 'bun';\n\nconst sql = withTypes(new SQL(Bun.env.DATABASE_URL!));\n\nexport async function getUser(id: number) {\n const [user] = await sql.GetUser`\n SELECT id, email, display_name FROM users WHERE id = ${id}\n `;\n return user; // typed { id: string; email: string; display_name: string | null }\n}\n```\n\n型を生成します:\n```\nbun bun-sqlgen generate 'src/**/*.ts' --migrations db/migrations\n```\n\nこれにより`src/queries.gen.d.ts`が書き込まれます — これをコミットしてください。これが配置されると、`user.emial`はコンパイルエラーとなり、`user.display_name.length`はnullの可能性があるとフラグが立てられます。これらはすべてプレーンなtscによるものです。\n\n例\n実行可能なプロジェクトは`examples/`フォルダにあります。\n\n貢献\n開発セットアップと規約は`CONTRIBUTING.md`にあります。