social bookmarking for atproto
1/*
2 * clippr: a social bookmarking service for the AT Protocol
3 * Copyright (c) 2025 clippr contributors.
4 * SPDX-License-Identifier: AGPL-3.0-only
5 */
6
7import { drizzle } from "drizzle-orm/libsql";
8import { Config } from "../config.js";
9import Logger from "../logger.js";
10
11const config = Config.getInstance();
12const dbname = config.get("database.name");
13
14export class Database {
15 private static instance: Database;
16 private readonly db;
17
18 private constructor() {
19 this.db = drizzle({ connection: { url: `${dbname}` } });
20 }
21
22 static getInstance(): Database {
23 if (!Database.instance) {
24 try {
25 Database.instance = new Database();
26 } catch (e) {
27 Logger.error(e);
28 process.exit(1);
29 }
30 }
31 return Database.instance;
32 }
33
34 getDb() {
35 return this.db;
36 }
37}