0.1.5•Updated 12 days ago
import type { ClientOptions } from 'jsr:@db/postgres';
const HOST = Deno.env.get('POSTGRESQL_HOST')!;
const PORT = Deno.env.get('POSTGRESQL_PORT')!;
const USERNAME = Deno.env.get('POSTGRESQL_USERNAME')!;
const PASSWORD = Deno.env.get('POSTGRESQL_PASSWORD')!;
const DATABASE = Deno.env.get('POSTGRESQL_DATABASE')!;
const tls_input = Deno.env.get('POSTGRESQL_TLS')?.toLowerCase();
const TLS = (tls_input !== undefined) && (tls_input == 'true' || tls_input == '1' || tls_input.startsWith('y'));
const auto_input = Deno.env.get('POSTGRESQL_AUTO_CONNECT')?.toLowerCase();
const AUTO_CONNECT = (auto_input !== undefined) && (auto_input == 'true' || auto_input == '1' || auto_input.startsWith('y'));
let POOL_COUNT = Number(Deno.env.get('POSTGRESQL_POOL_COUNT'));
if(!Number.isSafeInteger(POOL_COUNT) || POOL_COUNT < 1 || POOL_COUNT > 20) POOL_COUNT = 3;
if(AUTO_CONNECT) {
const errors: string[] = [];
if(!HOST) errors.push('POSTGRESQL_HOST');
if(!PORT) errors.push('POSTGRESQL_PORT');
if(!USERNAME) errors.push('POSTGRESQL_USERNAME');
if(!PASSWORD) errors.push('POSTGRESQL_PASSWORD');
if(!DATABASE) errors.push('POSTGRESQL_DATABASE');
if(errors.length > 0) throw new Error(`Missing PostgreSQL environment variables! [${errors.join(' | ')}]`);
}
const Environment = {
options: {
hostname: HOST,
port: PORT,
user: USERNAME,
password: PASSWORD,
database: DATABASE,
tls: {
enabled: TLS
}
} satisfies ClientOptions,
values: {
HOST,
PORT,
USERNAME,
PASSWORD,
DATABASE,
},
POOL_COUNT,
AUTO_CONNECT
};
export default Environment;