import { Connection, createConnection } from "typeorm"; import { SimpleError } from "../SimpleError"; import { QueryLogger } from "./queryLogger"; import path from "path"; import { backendDir } from "../paths"; const ormconfigPath = path.join(backendDir, "ormconfig.js"); const connectionOptions = require(ormconfigPath); let connectionPromise: Promise; export let connection: Connection; export function connect() { if (!connectionPromise) { connectionPromise = createConnection({ ...(connectionOptions as any), logging: ["query", "error"], logger: new QueryLogger(), }).then((newConnection) => { // Verify the DB timezone is set to UTC return newConnection.query("SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP) AS tz").then((r) => { if (r[0].tz !== "00:00:00") { throw new SimpleError(`Database timezone must be UTC (detected ${r[0].tz})`); } connection = newConnection; return newConnection; }); }); } return connectionPromise; }