From d66610b324dd58a5164689589b6bc7bc84fd9288 Mon Sep 17 00:00:00 2001 From: Meier Lukas Date: Sun, 2 Mar 2025 10:54:44 +0100 Subject: [PATCH] refactor: replace drizzle count with $count (#2471) --- packages/analytics/src/send-server-analytics.ts | 4 ++-- packages/api/src/router/group.ts | 11 +++-------- packages/api/src/router/home.ts | 3 +-- packages/api/src/router/icons.ts | 4 ++-- .../src/router/search-engine/search-engine-router.ts | 11 +++-------- 5 files changed, 11 insertions(+), 22 deletions(-) diff --git a/packages/analytics/src/send-server-analytics.ts b/packages/analytics/src/send-server-analytics.ts index e09bd71da..cdf94e134 100644 --- a/packages/analytics/src/send-server-analytics.ts +++ b/packages/analytics/src/send-server-analytics.ts @@ -36,7 +36,7 @@ const sendWidgetDataAsync = async (umamiInstance: Umami, analyticsSettings: type if (!analyticsSettings.enableWidgetData) { return; } - const widgetCount = (await db.select({ count: count(items.id) }).from(items))[0]?.count ?? 0; + const widgetCount = await db.$count(items); const response = await umamiInstance.track("server-widget-data", { countWidgets: widgetCount, @@ -52,7 +52,7 @@ const sendUserDataAsync = async (umamiInstance: Umami, analyticsSettings: typeof if (!analyticsSettings.enableUserData) { return; } - const userCount = (await db.select({ count: count(users.id) }).from(users))[0]?.count ?? 0; + const userCount = await db.$count(users); const response = await umamiInstance.track("server-user-data", { countUsers: userCount, diff --git a/packages/api/src/router/group.ts b/packages/api/src/router/group.ts index 37dde6e16..36fa8ba3d 100644 --- a/packages/api/src/router/group.ts +++ b/packages/api/src/router/group.ts @@ -2,7 +2,7 @@ import { TRPCError } from "@trpc/server"; import { z } from "zod"; import type { Database } from "@homarr/db"; -import { and, createId, eq, handleTransactionsAsync, like, not, sql } from "@homarr/db"; +import { and, createId, eq, handleTransactionsAsync, like, not } from "@homarr/db"; import { getMaxGroupPositionAsync } from "@homarr/db/queries"; import { groupMembers, groupPermissions, groups } from "@homarr/db/schema"; import { everyoneGroup } from "@homarr/definitions"; @@ -42,12 +42,7 @@ export const groupRouter = createTRPCRouter({ .input(validation.common.paginated) .query(async ({ input, ctx }) => { const whereQuery = input.search ? like(groups.name, `%${input.search.trim()}%`) : undefined; - const groupCount = await ctx.db - .select({ - count: sql`count(*)`, - }) - .from(groups) - .where(whereQuery); + const groupCount = await ctx.db.$count(groups, whereQuery); const dbGroups = await ctx.db.query.groups.findMany({ with: { @@ -74,7 +69,7 @@ export const groupRouter = createTRPCRouter({ ...group, members: group.members.map((member) => member.user), })), - totalCount: groupCount[0]?.count ?? 0, + totalCount: groupCount, }; }), getById: permissionRequiredProcedure diff --git a/packages/api/src/router/home.ts b/packages/api/src/router/home.ts index 7b65c74f3..16d31ffba 100644 --- a/packages/api/src/router/home.ts +++ b/packages/api/src/router/home.ts @@ -2,7 +2,6 @@ import type { AnySQLiteTable } from "drizzle-orm/sqlite-core"; import { isProviderEnabled } from "@homarr/auth/server"; import type { Database } from "@homarr/db"; -import { count } from "@homarr/db"; import { apps, boards, groups, integrations, invites, users } from "@homarr/db/schema"; import { createTRPCRouter, publicProcedure } from "../trpc"; @@ -28,5 +27,5 @@ const getCountForTableAsync = async (db: Database, table: AnySQLiteTable, canVie return 0; } - return (await db.select({ count: count() }).from(table))[0]?.count ?? 0; + return await db.$count(table); }; diff --git a/packages/api/src/router/icons.ts b/packages/api/src/router/icons.ts index 9a273336d..4a3b33051 100644 --- a/packages/api/src/router/icons.ts +++ b/packages/api/src/router/icons.ts @@ -1,4 +1,4 @@ -import { and, count, like } from "@homarr/db"; +import { and, like } from "@homarr/db"; import { icons } from "@homarr/db/schema"; import { validation } from "@homarr/validation"; @@ -24,7 +24,7 @@ export const iconsRouter = createTRPCRouter({ }, }, }), - countIcons: (await ctx.db.select({ count: count() }).from(icons))[0]?.count ?? 0, + countIcons: await ctx.db.$count(icons), }; }), }); diff --git a/packages/api/src/router/search-engine/search-engine-router.ts b/packages/api/src/router/search-engine/search-engine-router.ts index 4b99e476a..aebaf63a3 100644 --- a/packages/api/src/router/search-engine/search-engine-router.ts +++ b/packages/api/src/router/search-engine/search-engine-router.ts @@ -1,7 +1,7 @@ import { TRPCError } from "@trpc/server"; import { z } from "zod"; -import { asc, createId, eq, like, sql } from "@homarr/db"; +import { asc, createId, eq, like } from "@homarr/db"; import { getServerSettingByKeyAsync } from "@homarr/db/queries"; import { searchEngines, users } from "@homarr/db/schema"; import { integrationCreator } from "@homarr/integrations"; @@ -13,12 +13,7 @@ import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure, publ export const searchEngineRouter = createTRPCRouter({ getPaginated: protectedProcedure.input(validation.common.paginated).query(async ({ input, ctx }) => { const whereQuery = input.search ? like(searchEngines.name, `%${input.search.trim()}%`) : undefined; - const searchEngineCount = await ctx.db - .select({ - count: sql`count(*)`, - }) - .from(searchEngines) - .where(whereQuery); + const searchEngineCount = await ctx.db.$count(searchEngines, whereQuery); const dbSearachEngines = await ctx.db.query.searchEngines.findMany({ limit: input.pageSize, @@ -28,7 +23,7 @@ export const searchEngineRouter = createTRPCRouter({ return { items: dbSearachEngines, - totalCount: searchEngineCount[0]?.count ?? 0, + totalCount: searchEngineCount, }; }), getSelectable: protectedProcedure