mcpField
U
using-drizzle-queries

using-drizzle-queries

github.com/andrelandgrafデータ・データベース23135 回インストール20 週間前に更新
リポジトリ

using-drizzle-queries について

using-drizzle-queriesは、Drizzle ORMで型安全なデータベースクエリを書くためのリファレンススキルです。基本操作やリレーショナルクエリに加え、テーブル追加とマイグレーションの手順を扱います。

主な機能

  1. 01Select、insert、update、deleteクエリ
  2. 02リレーショナルクエリのパターン
  3. 03テーブルスキーマの作成
  4. 04スキーマ登録とマイグレーション

活用シーン

  1. 01条件付きデータベースクエリの作成
  2. 02リレーションを使った関連レコードの取得
  3. 03プロジェクトのスキーマにテーブルを追加
  4. 04データベースマイグレーションの生成と実行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/andrelandgraf/fullstackrecipes --skill using-drizzle-queries

インストール後、Claude Code で/using-drizzle-queriesを入力して読み込まれたか確認します。

詳細

Drizzle を使用した開発

Drizzle ORM で型安全なデータベースクエリを記述します。select、insert、update、delete、リレーショナルクエリ、新しいテーブルの追加について説明します。

Drizzle を使用した開発の実装

Drizzle ORM で型安全なデータベースクエリを記述します。select、insert、update、delete、リレーショナルクエリ、新しいテーブルの追加について説明します。

参照:


クエリの記述

型安全なデータベース操作には Drizzle のクエリ API を使用します。

import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq, desc } from "drizzle-orm";

// Select all
const allChats = await db.select().from(chats);

// Select with filter
const userChats = await db
  .select()
  .from(chats)
  .where(eq(chats.userId, userId))
  .orderBy(desc(chats.createdAt));

// Select single record
const chat = await db
  .select()
  .from(chats)
  .where(eq(chats.id, chatId))
  .limit(1)
  .then((rows) => rows[0]);
データの挿入
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";

// Insert single record
const [newChat] = await db
  .insert(chats)
  .values({
    userId,
    title: "New Chat",
  })
  .returning();

// Insert multiple records
await db.insert(messages).values([
  { chatId, role: "user", content: "Hello" },
  { chatId, role: "assistant", content: "Hi there!" },
]);
データの更新
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq } from "drizzle-orm";

await db
  .update(chats)
  .set({ title: "Updated Title" })
  .where(eq(chats.id, chatId));
データの削除
import { db } from "@/lib/db/client";
import { chats } from "@/lib/chat/schema";
import { eq } from "drizzle-orm";

await db.delete(chats).where(eq(chats.id, chatId));
リレーショナルクエリの使用

リレーションを含むクエリには、クエリ API を使用します。

import { db } from "@/lib/db/client";

const chatWithMessages = await db.query.chats.findFirst({
  where: eq(chats.id, chatId),
  with: {
    messages: {
      orderBy: (messages, { asc }) => [asc(messages.createdAt)],
    },
  },
});
新しいテーブルの追加
  1. 機能のライブラリフォルダーにスキーマを作成します。
// src/lib/feature/schema.ts
import { pgTable, text, uuid, timestamp } from "drizzle-orm/pg-core";

export const items = pgTable("items", {
  id: uuid("id").primaryKey().defaultRandom(),
  name: text("name").notNull(),
  createdAt: timestamp("created_at").defaultNow().notNull(),
});
  1. src/lib/db/client.ts にスキーマをインポートします。
import * as itemSchema from "@/lib/feature/schema";

const schema = {
  ...authSchema,
  ...chatSchema,
  ...itemSchema,
};
  1. マイグレーションを生成して実行します。
bun run db:generate
bun run db:migrate

参考資料

コメント