aboutsummaryrefslogtreecommitdiffstats
path: root/packages/db/drizzle.ts
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-02-07 09:37:48 +0000
committerMohamed Bassem <me@mbassem.com>2026-02-08 00:18:58 +0000
commit9e5693c6e4b410d1af05cc3d50c89ff73f21e060 (patch)
tree63f18bc726105383b075369511b0eb168e697551 /packages/db/drizzle.ts
parente59fd98b43070898c594c35af1a0bbee604ad160 (diff)
downloadkarakeep-9e5693c6e4b410d1af05cc3d50c89ff73f21e060.tar.zst
feat(db): add OpenTelemetry instrumentation for database queries
Instruments the better-sqlite3 driver so that every prepared statement execution (run/get/all) produces an OTel span with db.system, db.statement, and db.operation attributes. The instrumentation is a no-op when no TracerProvider is registered (i.e. tracing is disabled). https://claude.ai/code/session_01JZut7LqeHPUKAFbFLfVP8F
Diffstat (limited to 'packages/db/drizzle.ts')
-rw-r--r--packages/db/drizzle.ts3
1 files changed, 3 insertions, 0 deletions
diff --git a/packages/db/drizzle.ts b/packages/db/drizzle.ts
index 42078b1b..cedd35f2 100644
--- a/packages/db/drizzle.ts
+++ b/packages/db/drizzle.ts
@@ -8,6 +8,7 @@ import { migrate } from "drizzle-orm/better-sqlite3/migrator";
import serverConfig from "@karakeep/shared/config";
import dbConfig from "./drizzle.config";
+import { instrumentDatabase } from "./instrumentation";
import * as schema from "./schema";
const sqlite = new Database(dbConfig.dbCredentials.url);
@@ -22,6 +23,8 @@ sqlite.pragma("cache_size = -65536");
sqlite.pragma("foreign_keys = ON");
sqlite.pragma("temp_store = MEMORY");
+instrumentDatabase(sqlite);
+
export const db = drizzle(sqlite, { schema });
export type DB = typeof db;