Package Exports
- @revealui/db
- @revealui/db/cleanup
- @revealui/db/client
- @revealui/db/core
- @revealui/db/crypto
- @revealui/db/generated/zod-schemas
- @revealui/db/log-transport
- @revealui/db/queries/boards
- @revealui/db/queries/code-provenance
- @revealui/db/queries/conversations
- @revealui/db/queries/media
- @revealui/db/queries/orders
- @revealui/db/queries/pages
- @revealui/db/queries/posts
- @revealui/db/queries/products
- @revealui/db/queries/sites
- @revealui/db/queries/ticket-comments
- @revealui/db/queries/ticket-labels
- @revealui/db/queries/tickets
- @revealui/db/queries/users
- @revealui/db/schema
- @revealui/db/schema/agents
- @revealui/db/schema/cms
- @revealui/db/schema/code-provenance
- @revealui/db/schema/collab-edits
- @revealui/db/schema/crdt-operations
- @revealui/db/schema/node-ids
- @revealui/db/schema/pages
- @revealui/db/schema/products
- @revealui/db/schema/rag
- @revealui/db/schema/rate-limits
- @revealui/db/schema/sites
- @revealui/db/schema/tenants
- @revealui/db/schema/tickets
- @revealui/db/schema/users
- @revealui/db/schema/vector
- @revealui/db/schema/yjs-documents
- @revealui/db/types
- @revealui/db/validation
- @revealui/db/validation/cross-db
Readme
@revealui/db
Database schemas and Drizzle ORM integration for RevealUI.
Test Coverage: ~60% (best coverage in project, but still needs improvement)
Features
- Drizzle ORM: Type-safe database queries with Drizzle
- Schema Management: Database schema definitions for all RevealUI tables
- Multiple Providers: Works with Neon, Supabase, and Vercel Postgres
- Type Generation: Auto-generate TypeScript types from database schema
- Migrations: Database migration management with Drizzle Kit
- Type-safe: Full TypeScript support with inferred types
Installation
pnpm add @revealui/dbUsage
Import Database Client
import { createClient } from '@revealui/db/client'
const db = createClient({
connectionString: process.env.POSTGRES_URL!
})Import Schemas
// Import all schemas
import * as schema from '@revealui/db/schema'
// Import specific schemas
import { users } from '@revealui/db/schema/users'
import { posts } from '@revealui/db/schema/cms'
import { agentContexts } from '@revealui/db/schema/agents'
import { vectorMemory } from '@revealui/db/schema/vector'Query Database
import { createClient } from '@revealui/db/client'
import { users } from '@revealui/db/schema/users'
import { eq } from 'drizzle-orm'
const db = createClient({ connectionString: process.env.POSTGRES_URL! })
// Query users
const allUsers = await db.select().from(users)
// Query with filter
const user = await db.select().from(users).where(eq(users.email, 'user@example.com'))
// Insert user
await db.insert(users).values({
email: 'newuser@example.com',
name: 'New User'
})Available Exports
@revealui/db- Main export with database client@revealui/db/client- Database client factory@revealui/db/schema- All database schemas@revealui/db/schema/agents- Agent-related tables@revealui/db/schema/cms- CMS tables (posts, pages, media)@revealui/db/schema/users- User and authentication tables@revealui/db/schema/vector- Vector memory tables@revealui/db/schema/crdt-operations- CRDT operation log@revealui/db/schema/node-ids- Node ID mapping@revealui/db/schema/rate-limits- Rate limiting tables@revealui/db/schema/sites- Site configuration tables@revealui/db/types- TypeScript types for database entities
Database Management
# Generate types from schema
pnpm --filter @revealui/db generate:types
# Generate migration files
pnpm --filter @revealui/db db:generate
# Run migrations
pnpm --filter @revealui/db db:migrate
# Push schema changes (development only)
pnpm --filter @revealui/db db:push
# Open Drizzle Studio (database GUI)
pnpm --filter @revealui/db db:studioType Safety
All database operations are fully type-safe:
import { createClient } from '@revealui/db/client'
import { users } from '@revealui/db/schema/users'
const db = createClient({ connectionString: process.env.POSTGRES_URL! })
// TypeScript knows the shape of user rows
const allUsers = await db.select().from(users)
// allUsers: { id: string, email: string, name: string | null, ... }[]
// Insert is type-checked
await db.insert(users).values({
email: 'test@example.com',
name: 'Test User'
// TypeScript error if you add invalid fields
})Related Documentation
- Database Guide - Complete database setup and configuration
- Database Management - Operations and maintenance
- Drizzle ORM Docs - Official Drizzle documentation
License
MIT