diff --git a/apps/server/src/services/sql_init.ts b/apps/server/src/services/sql_init.ts index 9fc9ba2e5..3f0e839cd 100644 --- a/apps/server/src/services/sql_init.ts +++ b/apps/server/src/services/sql_init.ts @@ -197,15 +197,13 @@ function optimize() { log.info(`Optimization finished in ${Date.now() - start}ms.`); } -function getDbSize() { +export function getDbSize() { return sql.getValue("SELECT page_count * page_size / 1000 as size FROM pragma_page_count(), pragma_page_size()"); } function initializeDb() { cls.init(initDbConnection); - log.info(`DB size: ${getDbSize()} KB`); - dbReady.then(() => { if (config.General && config.General.noBackup === true) { log.info("Disabling scheduled backups."); diff --git a/apps/server/src/services/utils.ts b/apps/server/src/services/utils.ts index e2c97103c..ca6b809bb 100644 --- a/apps/server/src/services/utils.ts +++ b/apps/server/src/services/utils.ts @@ -482,6 +482,21 @@ export function formatUtcTime(time: string) { return time.replace("T", " ").substring(0, 19) } +// TODO: Deduplicate with client utils +export function formatSize(size: number | null | undefined) { + if (size === null || size === undefined) { + return ""; + } + + size = Math.max(Math.round(size / 1024), 1); + + if (size < 1024) { + return `${size} KiB`; + } else { + return `${Math.round(size / 102.4) / 10} MiB`; + } +} + export default { compareVersions, crash, diff --git a/apps/server/src/www.ts b/apps/server/src/www.ts index e8ef2a041..27abd59a0 100644 --- a/apps/server/src/www.ts +++ b/apps/server/src/www.ts @@ -6,11 +6,12 @@ import config from "./services/config.js"; import log from "./services/log.js"; import appInfo from "./services/app_info.js"; import ws from "./services/ws.js"; -import utils, { formatUtcTime } from "./services/utils.js"; +import utils, { formatSize, formatUtcTime } from "./services/utils.js"; import port from "./services/port.js"; import host from "./services/host.js"; import buildApp from "./app.js"; import type { Express } from "express"; +import { getDbSize } from "./services/sql_init.js"; const MINIMUM_NODE_VERSION = "20.0.0"; @@ -84,8 +85,7 @@ export default async function startTriliumServer() { } async function displayStartupMessage() { - log.info(""); - log.info(LOGO.replace("[version]", appInfo.appVersion)); + log.info("\n" + LOGO.replace("[version]", appInfo.appVersion)); log.info(`📦 Versions: app=${appInfo.appVersion} db=${appInfo.dbVersion} sync=${appInfo.syncVersion} clipper=${appInfo.clipperProtocolVersion}`) log.info(`🔧 Build: ${formatUtcTime(appInfo.buildDate)} (${appInfo.buildRevision.substring(0, 10)})`); log.info(`📂 Data dir: ${appInfo.dataDirectory}`); @@ -98,6 +98,7 @@ async function displayStartupMessage() { const cpuModel = (cpuInfos[0].model || "").trimEnd(); log.info(`💻 CPU: ${cpuModel} (${cpuInfos.length}-core @ ${cpuInfos[0].speed} Mhz)`); } + log.info(`💾 DB size: ${formatSize(getDbSize() * 1024)}`); log.info(""); }