Skip to content

Database API

The database API provides methods for connecting to and querying your database.

The database type is configured via environment variables:

DATABASE_TYPE = 'sqlite' | 'pg'

Executes a database query with parameters.

async function executeQuery<T>(
sql: string,
params?: any[]
): Promise<T[]>
  • sql (string): SQL query string
  • params (any[]): Optional query parameters

Returns an array of result rows.

const users = await executeQuery<User>(
'SELECT * FROM users WHERE group_id = ?',
[groupId]
)

Executes multiple queries in a transaction.

async function transaction<T>(
queries: Array<{sql: string, params?: any[]}>
): Promise<T>
await transaction([
{
sql: 'INSERT INTO users (email, name) VALUES (?, ?)',
params: ['user@example.com', 'John Doe']
},
{
sql: 'INSERT INTO groups_users (user_id, group_id) VALUES (?, ?)',
params: [userId, groupId]
}
])

Supported providers:

  • Turso
  • SQLite Cloud
  • Cloudflare D1

Configuration:

TURSO_SQLITE_URL=your-turso-url
TURSO_SQLITE_AUTH_TOKEN=your-turso-token

Configuration:

POSTGRES_DIRECT_URL=your-postgres-url
POSTGRES_SESSION_POOLED_URL=your-pooled-url

All database methods throw typed errors:

try {
await executeQuery('SELECT * FROM users')
} catch (error) {
if (error instanceof DatabaseError) {
console.error('Database error:', error.code, error.message)
}
}