diff --git a/packages/server/src/db/index.ts b/packages/server/src/db/index.ts index ffce3f9e..7ad63f4d 100644 --- a/packages/server/src/db/index.ts +++ b/packages/server/src/db/index.ts @@ -226,6 +226,10 @@ export function getDb(): DB { return db; } +export function getRawDb(): Database.Database { + return sqlite; +} + export function closeDatabase(): void { if (sqlite) { sqlite.close(); diff --git a/packages/server/src/routes/explore.ts b/packages/server/src/routes/explore.ts index d2f71e19..359eefbc 100644 --- a/packages/server/src/routes/explore.ts +++ b/packages/server/src/routes/explore.ts @@ -1,6 +1,6 @@ import type { FastifyInstance } from 'fastify'; import { eq, and, sql, inArray } from 'drizzle-orm'; -import { getDb, schema } from '../db/index.js'; +import { getDb, getRawDb, schema } from '../db/index.js'; import { authenticate } from '../utils/auth.js'; import { generateSnowflake } from '../utils/snowflake.js'; import { isMember, isServerOwner, hasPermission, computePermissions, PermissionBits, permissionsToString } from '../utils/permissions.js'; @@ -193,7 +193,7 @@ export async function exploreRoutes(app: FastifyInstance): Promise { // Build raw SQL query for explore — we need a LEFT JOIN for member count // which is more efficient to do with raw SQL - const rawDb = (db as any).$client as import('better-sqlite3').Database; + const rawDb = getRawDb(); // Count ALL discoverable servers (including ones the user has joined) for context const totalAllRow = rawDb.prepare(