using-drizzle-queries
Write type-safe database queries with Drizzle ORM. Covers select, insert, update, delete, relational queries, and adding new tables.
How do I install this agent skill?
npx skills add https://github.com/andrelandgraf/fullstackrecipes --skill using-drizzle-queriesIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill provides instructional content and code snippets for using the Drizzle ORM in a TypeScript project. It demonstrates standard database operations and schema management practices with no detected security risks.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- Runlayerwarn
1/1 file flagged
- ZeroLeakspass
Score: 93/100 · 2 sections analyzed
What does this agent skill do?
Working with Drizzle
Write type-safe database queries with Drizzle ORM. Covers select, insert, update, delete, relational queries, and adding new tables.
Implement Working with Drizzle
Write type-safe database queries with Drizzle ORM. Covers select, insert, update, delete, relational queries, and adding new tables.
See:
- Resource:
using-drizzle-queriesin Fullstack Recipes - URL: https://fullstackrecipes.com/recipes/using-drizzle-queries
Writing Queries
Use Drizzle's query API for type-safe database operations:
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]);
Inserting Data
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!" },
]);
Updating Data
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));
Deleting Data
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));
Using Relational Queries
For queries with relations, use the query 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)],
},
},
});
Adding New Tables
- Create the schema in the feature's library folder:
// 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(),
});
- Import the schema in
src/lib/db/client.ts:
import * as itemSchema from "@/lib/feature/schema";
const schema = {
...authSchema,
...chatSchema,
...itemSchema,
};
- Generate and run migrations:
bun run db:generate
bun run db:migrate
References
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/andrelandgraf/fullstackrecipes/using-drizzle-queries">View using-drizzle-queries on skillZs</a>