Skip to main content
CharleOS uses Drizzle ORM for type-safe database queries. This page covers query syntax, common patterns, and best practices.

Why Drizzle?

Type Safety

Full TypeScript inference - compile-time error checking

Zero Overhead

No runtime proxy, maps directly to SQL

SQL-Like API

Familiar syntax for SQL developers

Excellent DX

Auto-complete, inline docs, visual studio

Basic Queries

Select

Insert

Update

Delete

Filtering

Basic Conditions

Combining Conditions

Pattern Matching

IN / NOT IN

NULL Checks

Joins

Left Join

Inner Join

Multiple Joins

Aggregation

Count

Sum, Average, Min, Max

Group By

Sorting

Order By

Pagination

Limit & Offset

Transactions

Basic Transaction

Rollback on Error

Advanced Patterns

Conditional Queries

Build queries dynamically based on filters:

Subqueries

Upsert (Insert or Update)

Batch Operations

Common CharleOS Patterns

Get Task with Full Details

Calculate Client Utilization

Performance Tips

Drizzle supports index definitions in schema:
Don’t select all columns if you only need a few:
Always use .limit() when querying potentially large datasets:

Type Safety

Drizzle provides full type inference:

Error Handling

Debugging

Log Queries

Inspect Generated SQL

Schema

Database table definitions

Migrations

Managing schema changes

Drizzle Docs

Official Drizzle documentation