Kadak

Runtime Controls

Configure warnings, retries, replicas, caching, telemetry, and query analysis.

Runtime Controls

import { connect, KadakMetrics } from '@shyk/kadak-orm'

const metrics = new KadakMetrics()

const db = connect({
  url: process.env.DATABASE_URL!,
  dialect: 'postgres',
  readReplicas: [process.env.READ_REPLICA_URL!],
  warnings: 'relaxed',
  retryAttempts: 2,
  retryDelayMs: 200,
  retryBackoffFactor: 2,
  retryMaxDelayMs: 3000,
  retryJitterPct: 0.2,
  retryWrites: false,
  defaultLimit: 100,
  validateResults: true,
  slowQueryMs: 250,
  largeResultRows: 1000,
  repeatedQueryThreshold: 25,
  explainAnalyze: true,
  explainThresholdMs: 300,
  selectCacheTtlMs: 5000,
  selectCacheMaxEntries: 500,
  metrics,
  onWarning: (warning) => {
    // machine-readable warning event
    console.log(warning.warningCode, warning.phase)
  },
  onQuery: (event) => {
    if (event.durationMs > 300) console.log('slow query', event.sql)
  },
}, { users })

High-impact options

  • warnings: relaxed | strict | silent
  • dialect: 'postgres' | 'mysql' | 'sqlite' or custom adapter
  • defaultLimit: fallback $limit for list queries
  • readReplicas: route SELECT to replicas
  • retryAttempts + retryWrites: retry policy
  • retryBackoffFactor + retryMaxDelayMs + retryJitterPct: exponential retry backoff
  • selectCacheTtlMs + selectCacheMaxEntries: in-memory SELECT cache
  • validateResults: validate rows with table select validator
  • explainAnalyze: warn on slow/risky select plans
  • onWarning: structured warning event hook (warningCode, phase, message)

Metrics

console.log(metrics.snapshot())
console.log(metrics.exportPrometheus())

On this page