Database Instance
Import the database instance and schema from@packages/db:
db instance is a singleton that maintains connection pooling:
packages/db/src/index.ts
Query Patterns
Select Queries
Basic Select
Select Specific Columns
Filter with Where
Multiple Conditions
Insert Queries
Insert Single Record
Insert Multiple Records
Insert with Conflict Handling
Update Queries
Update Records
Conditional Update
Delete Queries
Delete Records
Delete with Multiple Conditions
Relational Queries
Query with Relations
Use Drizzle’s query API for eager loading:Nested Relations
Find Many with Relations
Advanced Patterns
Joins
Aggregations
Subqueries
Transactions
Operators
Drizzle provides comparison operators fromdrizzle-orm:
Equality
Comparison
Logic
Pattern Matching
Null Checks
Array Operations
Type Safety
All queries are fully typed:Better Auth Integration
The database is primarily accessed through Better Auth, which handles all authentication queries:packages/auth/src/index.ts
Best Practices
- Always use parameterized queries - Drizzle handles this automatically
- Use returning() to get inserted/updated data in a single query
- Leverage TypeScript inference - Let the types guide your queries
- Use transactions for operations that must succeed or fail together
- Prefer relational queries over manual joins when possible
- Index foreign keys - Already done in the schema definitions
- Use prepared statements for frequently executed queries