Drizzle ORMとは
Drizzle
ORMは、TypeScriptと完全に統合されたシンプルで型安全なデータベース操作を提供するオブジェクトリレーショナルマッパー(ORM)です。TypeScriptの型付けと、クエリビルダーの柔軟性が組み合わさった設計により、開発者が安全かつ効率的にデータベース操作を行うことができます。このORMは、シンプルなインストール手順でPostgreSQLやMySQL、SQLiteなど主要なデータベースに対応している点も特徴です。
必要な準備
Drizzle
ORMを始めるには、まず以下のステップに従い準備を行います。
インストール
以下のコマンドでDrizzle
ORMとその依存パッケージをインストールします。
npm install drizzle-orm drizzle-kit
これにより、Drizzle
のコアライブラリと、マイグレーションやクエリビルダーなどをサポートする「drizzle-kit」ツールがインストールされます。
データベース接続のセットアップ
Drizzle
では、PostgreSQL、MySQL、SQLiteなどの接続に対応しています。以下の手順では、PostgreSQLを例にとって接続設定を行います。
import { drizzle } from 'drizzle-orm/postgres-js';
import postgres from 'postgres';
const sql = postgres('postgres://username:password@localhost:5432/database');
const db = drizzle(sql);
この例では、postgres
関数を使ってデータベースに接続し、drizzle
関数でDBインスタンスを生成しています。TypeScript環境でも、型安全にデータベースへアクセスできるようになります。
データベーススキーマの定義
Drizzle
では、テーブルやフィールドを型安全に定義するため、スキーマをTypeScriptのコードで管理します。以下の例は、users
テーブルのスキーマ定義です。
import { integer, pgTable, serial, text, varchar } from 'drizzle-orm/pg-core';
export const users = pgTable('users', {
id: serial('id').primaryKey(),
name: varchar('name', { length: 255 }).notNull(),
age: integer('age').notNull(),
bio: text('bio'),
});
このように、Drizzle
ORMのpgTable
関数を使うことで、テーブルとカラムの構造をTypeScriptで直感的に記述できます。これにより、エラーを未然に防ぎつつ、開発を進めることが可能です。
CRUD操作の基本
Drizzle
ORMを使えば、簡単にCRUD(作成、読み取り、更新、削除)操作を実行できます。以下に、基本的なクエリ操作の例を示します。
レコードの挿入
新しいユーザーのレコードを挿入するには、insert
メソッドを使います。
await db.insert(users).values({
name: 'Taro',
age: 30,
bio: 'こんにちは、私はTaroです。',
});
このコードは、users
テーブルに名前や年齢などの情報を持つ新しいレコードを追加します。
レコードの読み取り
特定の条件に一致するレコードを取得するには、select
メソッドを利用します。
const result = await db.select().from(users).where(users.name.eq('Taro'));
console.log(result);
この例では、name
がTaro
であるユーザーを検索して、その結果を表示しています。
レコードの更新
既存のレコードを更新する場合には、update
メソッドを用います。
await db.update(users).set({ age: 31 }).where(users.name.eq('Taro'));
このコードは、name
がTaro
であるユーザーの年齢を31に更新します。
レコードの削除
指定した条件に一致するレコードを削除するには、delete
メソッドを使用します。
await db.delete(users).where(users.name.eq('Taro'));
この例は、name
がTaro
であるユーザーを削除します。
マイグレーションの管理
Drizzle
ORMでは、マイグレーション機能を使ってデータベーススキーマの変更を管理することが可能です。以下に、マイグレーションの生成と実行の基本的な流れを紹介します。
マイグレーションの生成
新しいマイグレーションを作成するためには、drizzle-kit
を使います。
npx drizzle-kit generate
このコマンドにより、新しいマイグレーションファイルが生成され、必要な変更がコードとして記述されます。
マイグレーションの実行
生成されたマイグレーションを適用するには、次のコマンドを使用します。
npx drizzle-kit migrate
これで、データベースのスキーマが最新の状態に更新され、変更が適用されます。
まとめ
Drizzle
ORMは、TypeScriptに特化した型安全なデータベース管理を提供し、シンプルなセットアップで始められるのが魅力です。スキーマ定義、CRUD操作、マイグレーションといった機能が充実しており、複雑なクエリもTypeScriptの恩恵を受けながら効率的に記述できます。これにより、エラーが少なく、読みやすいコードを実現できます。