# Database & ORM

> Interaction with NeonDB Postgres using Drizzle ORM.

- Skill: `majiayu000/database-orm` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/database-orm`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/database-orm/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/database-orm

---


# Database Logic

## Stack
- **Database**: Neon (Serverless Postgres)
- **ORM**: Drizzle ORM
- **Driver**: `@neondatabase/serverless`

## Connection
The database connection is initialized in `db/index.ts`.

```ts
import { neon } from '@neondatabase/serverless';
import { drizzle } from 'drizzle-orm/neon-http';

const sql = neon(process.env.DATABASE_URL!);
export const db = drizzle(sql);
```

## Schema
Schema definitions are in `db/schema.ts`.
- `users`, `sessions`, `accounts`, `verifications`: Auth tables.
- `analyses`, `chatbot_history`: App specific tables.

## Operations
Example of a database query:

```ts
import { db } from "@/db";
import { users } from "@/db/schema";
import { eq } from "drizzle-orm";

// Select
const user = await db.select().from(users).where(eq(users.email, "test@example.com"));

// Insert
await db.insert(users).values({ ... });
```

## Migrations
- Generate: `npx drizzle-kit generate`
- Push: `npx drizzle-kit push` (or migrate script)

