aboutsummaryrefslogtreecommitdiff
path: root/api/src/db/connection.ts
diff options
context:
space:
mode:
authorzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
committerzwlucas <lucas.fariamo08@gmail.com>2026-07-25 21:23:29 +0000
commitef55d9bb24430610b60c1b77821307cd72c08c55 (patch)
treee6935a810b34370b0a4c821e55f6397aac50c832 /api/src/db/connection.ts
downloadhelpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.tar.gz
helpdesk-ef55d9bb24430610b60c1b77821307cd72c08c55.zip
feat: upload of the projectHEADmaster
Signed-off-by: zwlucas <lucas.fariamo08@gmail.com>
Diffstat (limited to 'api/src/db/connection.ts')
-rw-r--r--api/src/db/connection.ts37
1 files changed, 37 insertions, 0 deletions
diff --git a/api/src/db/connection.ts b/api/src/db/connection.ts
new file mode 100644
index 0000000..2982336
--- /dev/null
+++ b/api/src/db/connection.ts
@@ -0,0 +1,37 @@
+/**
+ * connection.ts
+ *
+ * Singleton de conexão com o banco de dados.
+ *
+ * Exporta uma única instância do Drizzle ORM configurada com:
+ * - better-sqlite3 como driver síncrono
+ * - WAL mode para concorrência
+ * - Foreign keys habilitadas
+ * - Schema tipado para autocompletar queries
+ *
+ * Uso em qualquer módulo da aplicação:
+ * import { db } from '@/db/connection'
+ */
+
+import Database from 'better-sqlite3';
+import { drizzle } from 'drizzle-orm/better-sqlite3';
+import * as schema from './schema.js';
+
+const DATABASE_URL = process.env['DATABASE_URL'] ?? 'file:./helpdesk.db';
+const dbPath = DATABASE_URL.replace(/^file:/, '');
+
+// ─── Criação do cliente SQLite ────────────────────────────────────────────────
+const sqlite = new Database(dbPath);
+
+// WAL mode: leituras não bloqueiam escritas (essencial para servidor web)
+sqlite.pragma('journal_mode = WAL');
+
+// Ativa integridade referencial (desativada por padrão no SQLite)
+sqlite.pragma('foreign_keys = ON');
+
+// ─── Instância Drizzle com schema completo ────────────────────────────────────
+// Passar o schema habilita db.query.tickets.findMany() com joins automáticos
+export const db = drizzle(sqlite, { schema });
+
+// Exporta o tipo para uso em funções que recebem `db` como parâmetro
+export type Database = typeof db;