← ClaudeAtlas

drizzle-patternslisted

Drizzle ORM patterns for PostgreSQL.
aiskillstore/marketplace · ★ 329 · API & Backend · score 77
Install: claude install-skill aiskillstore/marketplace
# Drizzle ORM Patterns ## Schema Definition ```typescript // db/schema/users.ts import { pgTable, uuid, varchar, timestamp, boolean } from 'drizzle-orm/pg-core'; export const users = pgTable('users', { id: uuid('id').primaryKey().defaultRandom(), email: varchar('email', { length: 255 }).notNull().unique(), name: varchar('name', { length: 255 }), emailVerified: boolean('email_verified').default(false), createdAt: timestamp('created_at').defaultNow().notNull(), updatedAt: timestamp('updated_at').defaultNow().notNull(), }); export type User = typeof users.$inferSelect; export type NewUser = typeof users.$inferInsert; ``` ## Relations ```typescript // db/schema/relations.ts import { relations } from 'drizzle-orm'; import { users } from './users'; import { posts } from './posts'; export const usersRelations = relations(users, ({ many }) => ({ posts: many(posts), })); export const postsRelations = relations(posts, ({ one }) => ({ author: one(users, { fields: [posts.authorId], references: [users.id], }), })); ``` ## Database Client ```typescript // db/index.ts import { drizzle } from 'drizzle-orm/node-postgres'; import { Pool } from 'pg'; import * as schema from './schema'; const pool = new Pool({ connectionString: process.env.DATABASE_URL, }); export const db = drizzle(pool, { schema }); ``` ## Queries ```typescript import { eq, and, or, like, desc, asc } from 'drizzle-orm'; // Find one const user = await db.query.users.findFirst({ where