task-managment / src / lib / db / dbSingleton.ts
dbSingleton.ts
Raw
import { drizzle } from "drizzle-orm/vercel-postgres";
import { Pool } from "pg"; // Usando Pool para manejar la conexión

class DatabaseSingleton {
  private static instance: DatabaseSingleton;
  private pool: Pool;
  private dbConnection: ReturnType<typeof drizzle>;

  private constructor() {
    this.pool = new Pool({
      connectionString: process.env.DATABASE_URL,
    });
    this.dbConnection = drizzle(this.pool as any);
  }

  public static getInstance(): DatabaseSingleton {
    if (!DatabaseSingleton.instance) {
      DatabaseSingleton.instance = new DatabaseSingleton();
    }
    return DatabaseSingleton.instance;
  }

  public getConnection() {
    return this.dbConnection;
  }

  public async closeConnection() {
    await this.pool.end();
  }
}

export const database = DatabaseSingleton.getInstance().getConnection();