34 lines
726 B
JavaScript
34 lines
726 B
JavaScript
import knex from 'knex';
|
|
import config from "../config.js";
|
|
|
|
let database = null;
|
|
let lastFailed = null;
|
|
|
|
/**
|
|
* @return {Knex}
|
|
*/
|
|
export default function getDatabase() {
|
|
if (database) {
|
|
return database;
|
|
}
|
|
|
|
if (lastFailed && (new Date().getTime() - lastFailed.getTime() < 60000)) {
|
|
// attempt to reconnect every 1 minute, not more frequently
|
|
return;
|
|
}
|
|
|
|
try {
|
|
console.log('connecting db');
|
|
database = knex({
|
|
...config.database,
|
|
});
|
|
lastFailed = null;
|
|
return database;
|
|
} catch (e) {
|
|
console.error("Cannot connect to database". e);
|
|
database = null;
|
|
lastFailed = new Date();
|
|
return null;
|
|
}
|
|
};
|