From 0f67c006645a88efeb0d2f482ff0d9ede81b995e Mon Sep 17 00:00:00 2001 From: Tau Date: Wed, 8 May 2019 15:26:38 -0400 Subject: [PATCH] db: Add connectivity and schema version check --- src/db.ts | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/db.ts b/src/db.ts index 459822a..4c95e21 100644 --- a/src/db.ts +++ b/src/db.ts @@ -3,9 +3,14 @@ import { Pool, PoolClient } from "pg"; export type Id = bigint & { __id: T }; -const pool = new Pool(); +const currentSchemaVer = 0; + +const pool = new Pool(); +const fence = testConnection(); + +export async function connect(): Promise { + await fence; -export function connect(): Promise { return pool.connect(); } @@ -30,3 +35,22 @@ export function generateExtId(): number { return buf.readUInt32BE(0); } + +async function testConnection(): Promise { + const conn = await pool.connect(); + + try { + const { rows } = await conn.query("select schemaver from meta"); + const { schemaver } = rows[0]; + + if (schemaver !== currentSchemaVer) { + throw new Error( + `Expected schema version ${currentSchemaVer}, db is on ${schemaver}` + ); + } + + console.log("SQL DB: Connection established"); + } finally { + conn.release(); + } +}