😄
Drizzleの接続のメモ
Drizzleの接続のメモ
環境
- Next.js(app)
- postgresql
- docker-compose
インストール
npm install drizzle-orm postgres
npm install -D drizzle-kit
drizzle.config.tsの作成
ルートディレクトリに作成する
import { defineConfig } from "drizzle-kit"
export default defineConfig({
// スキーマファイルのディレクトリ
schema: "./src/db/schema.ts",
// マイグレーションファイルの出力先
out: "./src/db/migrations",
// 指定できるのはMySQL, PostgreSQL, SQLiteの3種類
dialect: "postgresql",
// 接続するDBの情報
dbCredentials: {
host: 'db',
user: 'root',
password: 'password',
port: 5432,
database: 'database',
},
});
コマンドの登録
使用するコマンドを登録すると便利なので登録
デフォルトではdrizzle.config.jsonが設定ファイルになっているみたいなので、設定ファイルが見つからないというエラーが発生する。なので設定ファイルをコマンドを実行するときに指定する
{
"scripts": {
"db:generate": "npx drizzle-kit generate --config drizzle.config.ts",
"db:push": "npx drizzle-kit push --config drizzle.config.ts"
}
}
スキーマの定義
他の型などはドキュメントを参照
import { pgTable, serial, text, boolean, timestamp } from "drizzle-orm/pg-core";
export const todos = pgTable("todos", {
id: serial("id").primaryKey(),
title: text("title").notNull(),
completed: boolean("completed").default(false).notNull(),
createdAt: timestamp("created_at").notNull().defaultNow(),
updatedAt: timestamp("updated_at").notNull().defaultNow(),
});
その後、スキーマ―を基にしてDDLを作成するため、下記コマンドを実行
npm run db:generate
drizzle.config.tsのout
で指定したディレクトリにファイルが諸々生成される
テーブルの作成
テーブルを作成する
npm run db:push
データベースに接続するクライアントを定義
データベースのURLは.env.localに書いておくのが吉
URLはpostgresql://ユーザー名:パスワード@ホスト名:ポート番号/データベース名
という構成になっている
const client = postgres("postgresql://root:password@db:5432/database");
export const db = drizzle(client, {
schema,
});
参考
最後に
間違っていることがあればコメントに書いていただけると幸いです。
よろしくお願いいたします。
Discussion