Skip to content

Commit 51e25d1

Browse files
committed
Attempt to fix race condition with database instantiation
1 parent 4cb85f6 commit 51e25d1

16 files changed

+26
-17
lines changed

backend/db.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import knex from "knex";
22
import {configGet, configHas} from "./lib/config.js";
33

4+
let instance = null;
5+
46
const generateDbConfig = () => {
57
if (!configHas("database")) {
68
throw new Error(
@@ -30,4 +32,11 @@ const generateDbConfig = () => {
3032
};
3133
};
3234

33-
export default knex(generateDbConfig());
35+
const getInstance = () => {
36+
if (!instance) {
37+
instance = knex(generateDbConfig());
38+
}
39+
return instance;
40+
}
41+
42+
export default getInstance;

backend/migrate.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ import db from "./db.js";
22
import { migrate as logger } from "./logger.js";
33

44
const migrateUp = async () => {
5-
const version = await db.migrate.currentVersion();
5+
const version = await db().migrate.currentVersion();
66
logger.info("Current database version:", version);
7-
return await db.migrate.latest({
7+
return await db().migrate.latest({
88
tableName: "migrations",
99
directory: "migrations",
1010
});

backend/models/access_list.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import now from "./now_helper.js";
1010
import ProxyHostModel from "./proxy_host.js";
1111
import User from "./user.js";
1212

13-
Model.knex(db);
13+
Model.knex(db());
1414

1515
const boolFields = ["is_deleted", "satisfy_any", "pass_auth"];
1616

backend/models/access_list_auth.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import db from "../db.js";
66
import accessListModel from "./access_list.js";
77
import now from "./now_helper.js";
88

9-
Model.knex(db);
9+
Model.knex(db());
1010

1111
class AccessListAuth extends Model {
1212
$beforeInsert() {

backend/models/access_list_client.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import db from "../db.js";
66
import accessListModel from "./access_list.js";
77
import now from "./now_helper.js";
88

9-
Model.knex(db);
9+
Model.knex(db());
1010

1111
class AccessListClient extends Model {
1212
$beforeInsert() {

backend/models/audit-log.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import db from "../db.js";
66
import now from "./now_helper.js";
77
import User from "./user.js";
88

9-
Model.knex(db);
9+
Model.knex(db());
1010

1111
class AuditLog extends Model {
1212
$beforeInsert() {

backend/models/auth.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { convertBoolFieldsToInt, convertIntFieldsToBool } from "../lib/helpers.j
88
import now from "./now_helper.js";
99
import User from "./user.js";
1010

11-
Model.knex(db);
11+
Model.knex(db());
1212

1313
const boolFields = ["is_deleted"];
1414

backend/models/certificate.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import redirectionHostModel from "./redirection_host.js";
1111
import streamModel from "./stream.js";
1212
import userModel from "./user.js";
1313

14-
Model.knex(db);
14+
Model.knex(db());
1515

1616
const boolFields = ["is_deleted"];
1717

backend/models/dead_host.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Certificate from "./certificate.js";
88
import now from "./now_helper.js";
99
import User from "./user.js";
1010

11-
Model.knex(db);
11+
Model.knex(db());
1212

1313
const boolFields = ["is_deleted", "ssl_forced", "http2_support", "enabled", "hsts_enabled", "hsts_subdomains"];
1414

backend/models/now_helper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Model } from "objection";
22
import db from "../db.js";
33
import { isSqlite } from "../lib/config.js";
44

5-
Model.knex(db);
5+
Model.knex(db());
66

77
export default () => {
88
if (isSqlite()) {

0 commit comments

Comments
 (0)