swadhinbiswas feat: optimize Docker CI/CD builds, refine site-wide UI aesthetic, and remediate secrets · 8/19/2026
c3e5c18
40 lines · 946 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import { createClient } from "@libsql/client";
import { drizzle } from "drizzle-orm/libsql";
import * as schema from "./schema";

let _db: ReturnType<typeof drizzle> | null = null;

export function getDb() {
  if (_db) return _db;

  const url = (
    process.env.TURSO_DATABASE_URL ||
    (typeof import.meta !== "undefined" && (import.meta as any).env?.TURSO_DATABASE_URL) ||
    ""
  ).trim();

  const authToken = (
    process.env.TURSO_AUTH_TOKEN ||
    (typeof import.meta !== "undefined" && (import.meta as any).env?.TURSO_AUTH_TOKEN) ||
    ""
  ).trim();

  if (!url) {
    throw new Error(
      "TURSO_DATABASE_URL is required. Set it in your .env to a Turso database URL.\n" +
      "Example: TURSO_DATABASE_URL=libsql://your-db-name-your-org.turso.io"
    );
  }

  const client = createClient({
    url,
    authToken: authToken || undefined,
  });

  _db = drizzle(client, { schema });
  return _db;
}

export * from "./schema";