0.1.1Updated 2 months ago
import { Pool, type QueryObjectResult } from 'jsr:@db/postgres';

import Environment from "../modules/environment.ts";

const { options, POOL_COUNT } = Environment;

const pool = new Pool(options, POOL_COUNT, true);

const connection = await pool.connect();

export class Postgres {
  private constructor() {}

  static async query<T = unknown>(clause: string, args?: unknown[]): Promise<QueryObjectResult<T> | { rows: [], rowCount: 0 }> {
    try {
      return await connection.queryObject<T>(clause, args);
    // deno-lint-ignore no-explicit-any
    } catch (e: any) {
      console.error(clause, args);
      console.warn(e.message);
      console.warn(e.stack);

      return { rows: [], rowCount: 0 };
    }
  }
}