import { Pool, type QueryResultRow } from "pg";

import { env } from "../config/env.js";

export const db = new Pool({
  connectionString: env.DATABASE_URL,
});

export const query = async <T extends QueryResultRow = QueryResultRow>(
  text: string,
  params: unknown[] = [],
): Promise<T[]> => {
  const result = await db.query<T>(text, params);
  return result.rows;
};

export const queryOne = async <T extends QueryResultRow = QueryResultRow>(
  text: string,
  params: unknown[] = [],
): Promise<T | null> => {
  const rows = await query<T>(text, params);
  return rows[0] ?? null;
};
