Drizzle ORMにおけるPostgreSQLカラム型
PostgreSQLカラム型からDrizzle ORM pg-coreカラムビルダーへの完全マッピングガイド。serial、uuid、jsonb、タイムゾーン付きtimestampなどを含みます。
Column Types
詳細な説明
DrizzleにおけるPostgreSQL型マッピング
Drizzleのdrizzle-orm/pg-coreモジュールは、PostgreSQLのネイティブ型を忠実に反映するカラムビルダーを提供します。これにより、使用するデータベース型を正確に制御できます。
一般的な型マッピング
| PostgreSQL型 | Drizzleビルダー | 例 |
|---|---|---|
SERIAL |
serial() |
serial("id") |
BIGSERIAL |
bigserial() |
bigserial("id", { mode: "number" }) |
INTEGER |
integer() |
integer("count") |
SMALLINT |
smallint() |
smallint("age") |
BIGINT |
bigint() |
bigint("total", { mode: "number" }) |
VARCHAR(n) |
varchar() |
varchar("name", { length: 255 }) |
TEXT |
text() |
text("bio") |
BOOLEAN |
boolean() |
boolean("active") |
TIMESTAMP |
timestamp() |
timestamp("created_at") |
TIMESTAMPTZ |
timestamp() |
timestamp("created_at", { withTimezone: true }) |
DATE |
date() |
date("birth_date") |
UUID |
uuid() |
uuid("id") |
JSON |
json() |
json("data") |
JSONB |
jsonb() |
jsonb("metadata") |
NUMERIC(p,s) |
numeric() |
numeric("price", { precision: 10, scale: 2 }) |
REAL |
real() |
real("score") |
DOUBLE PRECISION |
doublePrecision() |
doublePrecision("lat") |
変換例
CREATE TABLE products (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
name VARCHAR(200) NOT NULL,
price NUMERIC(10, 2) NOT NULL,
metadata JSONB,
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
);
生成結果:
import { jsonb, numeric, pgTable, timestamp, uuid, varchar } from "drizzle-orm/pg-core";
import { sql } from "drizzle-orm";
export const products = pgTable("products", {
id: uuid("id").default(sql`gen_random_uuid()`).primaryKey(),
name: varchar("name", { length: 200 }).notNull(),
price: numeric("price", { precision: 10, scale: 2 }).notNull(),
metadata: jsonb("metadata"),
createdAt: timestamp("created_at", { withTimezone: true }).default(sql`CURRENT_TIMESTAMP`),
});
PostgreSQL固有のビルダー
一部のビルダーはpg-coreモジュール専用です:uuid()、jsonb()、doublePrecision()、smallint()、serial()、bigserial()。これらはMySQLやSQLiteモジュールに直接対応するものがなく、ダイアレクトを切り替えると代替型にマッピングされます。
ユースケース
Drizzle ORMを使用してPostgreSQLバックエンドのアプリケーションを構築しており、既存のPostgreSQLカラム型に対応するpg-coreカラムビルダーを理解する必要がある場合。