aboutsummaryrefslogtreecommitdiff
path: root/api/src/db/client.ts
diff options
context:
space:
mode:
Diffstat (limited to 'api/src/db/client.ts')
-rw-r--r--api/src/db/client.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/api/src/db/client.ts b/api/src/db/client.ts
new file mode 100644
index 0000000..5e9673f
--- /dev/null
+++ b/api/src/db/client.ts
@@ -0,0 +1,23 @@
+import { Database } from 'bun:sqlite';
+import { drizzle } from 'drizzle-orm/bun-sqlite';
+import * as schema from './schema';
+
+/**
+ * Instância única do banco de dados SQLite via Drizzle ORM.
+ * Utiliza o driver nativo do Bun para máxima performance.
+ *
+ * O caminho do arquivo pode ser configurado via variável de ambiente DATABASE_URL.
+ * Quando não definida, usa 'yaba.db' na raiz do projeto.
+ */
+const sqlite = new Database(process.env.DATABASE_URL ?? 'yaba.db');
+
+/**
+ * Habilita WAL mode para melhor performance em leituras concorrentes.
+ * @see https://www.sqlite.org/wal.html
+ */
+sqlite.exec('PRAGMA journal_mode = WAL;');
+sqlite.exec('PRAGMA foreign_keys = ON;');
+
+export const db = drizzle(sqlite, { schema });
+
+export type DB = typeof db;