From 0cf765fa9f50ff0583711d1d9e5f0574b5485216 Mon Sep 17 00:00:00 2001 From: Rory& Date: Thu, 25 Dec 2025 03:45:49 +0100 Subject: [PATCH] Drop sqlite3 by default --- package-lock.json | Bin 440980 -> 404842 bytes package.json | 6 +++++- src/util/util/Database.ts | 18 +++++++++++++----- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 41c03b0eb1ccc848fb92f31d74d5505db082b1ec..6c0a33cdee6184b22c01a5171375184fc124f576 100644 GIT binary patch delta 470 zcmZ9|Pe{{Y90qXS_xpW+TU)>17N%Q2aWNAI!DOMel>V$kjR?X5$z=zF)kQ`NoOV$N zqAtP?YA+SUD53~+gCS2Kl;R;fRh0D4WJJPhz37$0e948bU5iZ4zg8QQW-|SbHTCSl>q{gL=TlJFuyrmIU4>=}#2Hx2dZUJWJ2F zW9u@d>0c$L3sdaWg-)e(JkKMDl&I{%;14?H8ZW&L>U1}^!dj<<7ZsCTgd=s_Dq;KB zzwLU6`}AalJF(Kv-wAiR*yDy7=b`-=zRI%>WGC1%aqBM6^M*G1fXDE*$SvYO9Xn?@ zBk}Dqry4Nzk}EExKJf`g&no|B3|6^6h&G>k+Kuvn%6L#6RVjk=iprWgcT+i$pH!hb zTzIHP!ur%&cN&o-= delta 12483 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 diff --git a/package.json b/package.json index 33a7975e0..14b4c5fd4 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,6 @@ "picocolors": "^1.1.1", "probe-image-size": "^7.2.3", "reflect-metadata": "^0.2.2", - "sqlite3": "^5.1.7", "tslib": "^2.8.1", "typeorm": "^0.3.28", "wretch": "^2.11.1", @@ -132,5 +131,10 @@ "mailgun.js": "^12.4.0", "node-mailjet": "^6.0.11", "nodemailer": "^7.0.11" + }, + "overrides": { + "typeorm": { + "sqlite3": "../_EXCLUDED_" + } } } diff --git a/src/util/util/Database.ts b/src/util/util/Database.ts index 647fba015..7a0d084f0 100644 --- a/src/util/util/Database.ts +++ b/src/util/util/Database.ts @@ -39,6 +39,18 @@ const dbConnectionString = process.env.DATABASE || path.join(process.cwd(), "dat export const DatabaseType = dbConnectionString.includes("://") ? dbConnectionString.split(":")[0]?.replace("+srv", "") : "sqlite"; const isSqlite = DatabaseType.includes("sqlite"); +let hasWarnedSqlite = false; +if (isSqlite && !hasWarnedSqlite) { + hasWarnedSqlite = true; + console.log(`[Database] ${red(`You are running sqlite! Please keep in mind that we recommend setting up a dedicated database!`)}`); + try { + const _ = require("sqlite3"); + } catch (e) { + console.log(`[Database] ${red(`Failed to load sqlite3 package. Please install it with 'npm install --no-save sqlite3', or switch to a real database like Postgres.`)}`); + process.exit(1); + } +} + export const DataSourceOptions = new DataSource({ // eslint-disable-next-line @typescript-eslint/ban-ts-comment //@ts-ignore type 'string' is not 'sqlite' | 'postgres' | etc etc @@ -66,10 +78,6 @@ export function getDatabase(): DataSource | null { export async function initDatabase(): Promise { if (dbConnection) return dbConnection; - if (isSqlite) { - console.log(`[Database] ${red(`You are running sqlite! Please keep in mind that we recommend setting up a dedicated database!`)}`); - } - if (!process.env.DB_SYNC) { const supported = ["postgres", "sqlite"]; if (!supported.includes(DatabaseType)) { @@ -80,7 +88,7 @@ export async function initDatabase(): Promise { ` To ignore, set DB_SYNC=true in your env. https://docs.spacebar.chat/setup/server/configuration/env/`, ), ); - process.exit(); + process.exit(1); } }