diff --git a/apps/nextjs/package.json b/apps/nextjs/package.json index 2c08d46b3..6d6fad1e7 100644 --- a/apps/nextjs/package.json +++ b/apps/nextjs/package.json @@ -71,6 +71,7 @@ "clsx": "^2.1.1", "dayjs": "^1.11.19", "dotenv": "^17.2.3", + "drizzle-orm": "^0.45.1", "flag-icons": "^7.5.0", "glob": "^13.0.0", "isomorphic-dompurify": "^2.34.0", diff --git a/apps/nextjs/src/app/[locale]/auth/invite/[id]/page.tsx b/apps/nextjs/src/app/[locale]/auth/invite/[id]/page.tsx index cc6535703..f837ba87d 100644 --- a/apps/nextjs/src/app/[locale]/auth/invite/[id]/page.tsx +++ b/apps/nextjs/src/app/[locale]/auth/invite/[id]/page.tsx @@ -1,9 +1,10 @@ import { notFound } from "next/navigation"; import { Card, Center, Stack, Text, Title } from "@mantine/core"; +import { and, eq } from "drizzle-orm"; import { auth } from "@homarr/auth/next"; import { isProviderEnabled } from "@homarr/auth/server"; -import { and, db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { invites } from "@homarr/db/schema"; import { getScopedI18n } from "@homarr/translation/server"; diff --git a/apps/nextjs/src/app/[locale]/manage/users/create/page.tsx b/apps/nextjs/src/app/[locale]/manage/users/create/page.tsx index 30511e47f..a333b0f8b 100644 --- a/apps/nextjs/src/app/[locale]/manage/users/create/page.tsx +++ b/apps/nextjs/src/app/[locale]/manage/users/create/page.tsx @@ -1,8 +1,9 @@ import { notFound } from "next/navigation"; +import { inArray } from "drizzle-orm"; import { auth } from "@homarr/auth/next"; import { isProviderEnabled } from "@homarr/auth/server"; -import { db, inArray } from "@homarr/db"; +import { db } from "@homarr/db"; import { groups } from "@homarr/db/schema"; import { everyoneGroup } from "@homarr/definitions"; import { getScopedI18n } from "@homarr/translation/server"; diff --git a/apps/nextjs/src/app/api/[...trpc]/route.ts b/apps/nextjs/src/app/api/[...trpc]/route.ts index fa5ced6fc..fc5550b40 100644 --- a/apps/nextjs/src/app/api/[...trpc]/route.ts +++ b/apps/nextjs/src/app/api/[...trpc]/route.ts @@ -1,5 +1,6 @@ import type { NextRequest } from "next/server"; import { userAgent } from "next/server"; +import { eq } from "drizzle-orm"; import { createOpenApiFetchHandler } from "trpc-to-openapi"; import { appRouter, createTRPCContext } from "@homarr/api"; @@ -8,7 +9,7 @@ import { hashPasswordAsync } from "@homarr/auth"; import { createSessionAsync } from "@homarr/auth/server"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error"; -import { db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { apiKeys } from "@homarr/db/schema"; const logger = createLogger({ module: "trpcOpenApiRoute" }); diff --git a/apps/nextjs/src/app/api/user-medias/[id]/route.ts b/apps/nextjs/src/app/api/user-medias/[id]/route.ts index e3401c976..af6be89d5 100644 --- a/apps/nextjs/src/app/api/user-medias/[id]/route.ts +++ b/apps/nextjs/src/app/api/user-medias/[id]/route.ts @@ -1,9 +1,10 @@ import { notFound } from "next/navigation"; import { NextResponse } from "next/server"; import type { NextRequest } from "next/server"; +import { eq } from "drizzle-orm"; import DOMPurify from "isomorphic-dompurify"; -import { db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { medias } from "@homarr/db/schema"; export async function GET(_req: NextRequest, props: { params: Promise<{ id: string }> }) { diff --git a/apps/tasks/package.json b/apps/tasks/package.json index 3d663aa84..11d966023 100644 --- a/apps/tasks/package.json +++ b/apps/tasks/package.json @@ -39,6 +39,7 @@ "@homarr/widgets": "workspace:^0.1.0", "dayjs": "^1.11.19", "dotenv": "^17.2.3", + "drizzle-orm": "^0.45.1", "fastify": "^5.6.2", "superjson": "2.2.6", "undici": "7.16.0" diff --git a/apps/tasks/src/job-manager.ts b/apps/tasks/src/job-manager.ts index 9e23c7d36..4aa7da0a7 100644 --- a/apps/tasks/src/job-manager.ts +++ b/apps/tasks/src/job-manager.ts @@ -1,10 +1,11 @@ +import type { InferInsertModel } from "drizzle-orm"; +import { eq } from "drizzle-orm"; import { schedule, validate as validateCron } from "node-cron"; import { createLogger } from "@homarr/core/infrastructure/logs"; import type { IJobManager } from "@homarr/cron-job-api"; import type { jobGroup as cronJobGroup, JobGroupKeys } from "@homarr/cron-jobs"; -import type { Database, InferInsertModel } from "@homarr/db"; -import { eq } from "@homarr/db"; +import type { Database } from "@homarr/db"; import { cronJobConfigurations } from "@homarr/db/schema"; const logger = createLogger({ module: "jobManager" }); diff --git a/apps/tasks/src/on-start/session-cleanup.ts b/apps/tasks/src/on-start/session-cleanup.ts index 3ef6d9cdc..9416d46c8 100644 --- a/apps/tasks/src/on-start/session-cleanup.ts +++ b/apps/tasks/src/on-start/session-cleanup.ts @@ -1,6 +1,8 @@ +import { eq, inArray } from "drizzle-orm"; + import { env } from "@homarr/auth/env"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import { db, eq, inArray } from "@homarr/db"; +import { db } from "@homarr/db"; import { sessions, users } from "@homarr/db/schema"; import { supportedAuthProviders } from "@homarr/definitions"; diff --git a/packages/analytics/package.json b/packages/analytics/package.json index 18324242c..100795591 100644 --- a/packages/analytics/package.json +++ b/packages/analytics/package.json @@ -26,6 +26,7 @@ "@homarr/db": "workspace:^0.1.0", "@homarr/server-settings": "workspace:^0.1.0", "@umami/node": "^0.4.0", + "drizzle-orm": "^0.45.1", "superjson": "2.2.6" }, "devDependencies": { diff --git a/packages/analytics/src/send-server-analytics.ts b/packages/analytics/src/send-server-analytics.ts index 27f1ae3d8..72b80591c 100644 --- a/packages/analytics/src/send-server-analytics.ts +++ b/packages/analytics/src/send-server-analytics.ts @@ -1,8 +1,9 @@ import type { UmamiEventData } from "@umami/node"; import { Umami } from "@umami/node"; +import { count } from "drizzle-orm"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import { count, db } from "@homarr/db"; +import { db } from "@homarr/db"; import { getServerSettingByKeyAsync } from "@homarr/db/queries"; import { integrations, items, users } from "@homarr/db/schema"; import type { defaultServerSettings } from "@homarr/server-settings"; diff --git a/packages/api/package.json b/packages/api/package.json index e80fac354..37a6b4d07 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -46,6 +46,7 @@ "@trpc/react-query": "^11.8.0", "@trpc/server": "^11.8.0", "@trpc/tanstack-react-query": "^11.8.0", + "drizzle-orm": "^0.45.1", "lodash.clonedeep": "^4.5.0", "next": "16.0.10", "react": "19.2.3", diff --git a/packages/api/src/middlewares/integration.ts b/packages/api/src/middlewares/integration.ts index 320cc7f66..0b195ca7c 100644 --- a/packages/api/src/middlewares/integration.ts +++ b/packages/api/src/middlewares/integration.ts @@ -1,4 +1,5 @@ import { TRPCError } from "@trpc/server"; +import { and, eq, inArray } from "drizzle-orm"; import { z } from "zod/v4"; import type { Session } from "@homarr/auth"; @@ -7,7 +8,6 @@ import { constructIntegrationPermissions } from "@homarr/auth/shared"; import { decryptSecret } from "@homarr/common/server"; import type { AtLeastOneOf } from "@homarr/common/types"; import type { Database } from "@homarr/db"; -import { and, eq, inArray } from "@homarr/db"; import { integrations } from "@homarr/db/schema"; import type { IntegrationKind } from "@homarr/definitions"; diff --git a/packages/api/src/middlewares/item.ts b/packages/api/src/middlewares/item.ts index 375e21607..cae3e7b74 100644 --- a/packages/api/src/middlewares/item.ts +++ b/packages/api/src/middlewares/item.ts @@ -1,7 +1,7 @@ import { TRPCError } from "@trpc/server"; +import { and, eq } from "drizzle-orm"; import { z } from "zod/v4"; -import { and, eq } from "@homarr/db"; import { items } from "@homarr/db/schema"; import type { WidgetKind } from "@homarr/definitions"; diff --git a/packages/api/src/router/apiKeys.ts b/packages/api/src/router/apiKeys.ts index cdf8b5bea..42c25dcff 100644 --- a/packages/api/src/router/apiKeys.ts +++ b/packages/api/src/router/apiKeys.ts @@ -1,9 +1,10 @@ +import { eq } from "drizzle-orm"; import { z } from "zod/v4"; import { createSaltAsync, hashPasswordAsync } from "@homarr/auth"; import { createId } from "@homarr/common"; import { generateSecureRandomToken } from "@homarr/common/server"; -import { db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { apiKeys } from "@homarr/db/schema"; import { createTRPCRouter, permissionRequiredProcedure } from "../trpc"; diff --git a/packages/api/src/router/app.ts b/packages/api/src/router/app.ts index 32c607951..2b04b5e33 100644 --- a/packages/api/src/router/app.ts +++ b/packages/api/src/router/app.ts @@ -1,8 +1,8 @@ import { TRPCError } from "@trpc/server"; +import { asc, eq, inArray, like } from "drizzle-orm"; import { z } from "zod/v4"; import { createId } from "@homarr/common"; -import { asc, eq, inArray, like } from "@homarr/db"; import { apps } from "@homarr/db/schema"; import { selectAppSchema } from "@homarr/db/validationSchemas"; import { getIconForName } from "@homarr/icons"; diff --git a/packages/api/src/router/app/app-access-control.ts b/packages/api/src/router/app/app-access-control.ts index 0f5a0a478..66e39556b 100644 --- a/packages/api/src/router/app/app-access-control.ts +++ b/packages/api/src/router/app/app-access-control.ts @@ -1,7 +1,8 @@ +import { eq, or } from "drizzle-orm"; import SuperJSON from "superjson"; import type { Session } from "@homarr/auth"; -import { db, eq, or } from "@homarr/db"; +import { db } from "@homarr/db"; import { items } from "@homarr/db/schema"; import type { WidgetComponentProps } from "../../../../widgets/src"; diff --git a/packages/api/src/router/board.ts b/packages/api/src/router/board.ts index 8d118018b..13f149cb6 100644 --- a/packages/api/src/router/board.ts +++ b/packages/api/src/router/board.ts @@ -1,12 +1,14 @@ import { TRPCError } from "@trpc/server"; +import type { InferInsertModel, InferSelectModel, SQL } from "drizzle-orm"; +import { and, asc, eq, inArray, isNull, like, not, or, sql } from "drizzle-orm"; import superjson from "superjson"; import { z } from "zod/v4"; import { constructBoardPermissions } from "@homarr/auth/shared"; import { createId } from "@homarr/common"; import type { DeviceType } from "@homarr/common/server"; -import type { Database, InferInsertModel, InferSelectModel, SQL } from "@homarr/db"; -import { and, asc, eq, handleTransactionsAsync, inArray, isNull, like, not, or, sql } from "@homarr/db"; +import type { Database } from "@homarr/db"; +import { handleTransactionsAsync } from "@homarr/db"; import { createDbInsertCollectionWithoutTransaction } from "@homarr/db/collection"; import { getServerSettingByKeyAsync } from "@homarr/db/queries"; import { diff --git a/packages/api/src/router/board/board-access.ts b/packages/api/src/router/board/board-access.ts index 1e4351cba..cf8a33d11 100644 --- a/packages/api/src/router/board/board-access.ts +++ b/packages/api/src/router/board/board-access.ts @@ -1,9 +1,10 @@ import { TRPCError } from "@trpc/server"; +import type { SQL } from "drizzle-orm"; +import { eq, inArray } from "drizzle-orm"; import type { Session } from "@homarr/auth"; import { constructBoardPermissions } from "@homarr/auth/shared"; -import type { Database, SQL } from "@homarr/db"; -import { eq, inArray } from "@homarr/db"; +import type { Database } from "@homarr/db"; import { boardGroupPermissions, boardUserPermissions, groupMembers } from "@homarr/db/schema"; import type { BoardPermission } from "@homarr/definitions"; diff --git a/packages/api/src/router/certificates/certificate-router.ts b/packages/api/src/router/certificates/certificate-router.ts index cab6633f0..6138f8848 100644 --- a/packages/api/src/router/certificates/certificate-router.ts +++ b/packages/api/src/router/certificates/certificate-router.ts @@ -1,5 +1,6 @@ import { X509Certificate } from "node:crypto"; import { TRPCError } from "@trpc/server"; +import { and, eq } from "drizzle-orm"; import { zfd } from "zod-form-data"; import { z } from "zod/v4"; @@ -8,7 +9,6 @@ import { removeCustomRootCertificateAsync, } from "@homarr/core/infrastructure/certificates"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import { and, eq } from "@homarr/db"; import { trustedCertificateHostnames } from "@homarr/db/schema"; import { certificateValidFileNameSchema, checkCertificateFile } from "@homarr/validation/certificates"; diff --git a/packages/api/src/router/group.ts b/packages/api/src/router/group.ts index 13fb4fdd3..4fbda36b4 100644 --- a/packages/api/src/router/group.ts +++ b/packages/api/src/router/group.ts @@ -1,9 +1,10 @@ import { TRPCError } from "@trpc/server"; +import { and, eq, like, not } from "drizzle-orm"; import { z } from "zod/v4"; import { createId } from "@homarr/common"; import type { Database } from "@homarr/db"; -import { and, eq, handleTransactionsAsync, like, not } from "@homarr/db"; +import { handleTransactionsAsync } from "@homarr/db"; import { getMaxGroupPositionAsync } from "@homarr/db/queries"; import { groupMembers, groupPermissions, groups } from "@homarr/db/schema"; import { everyoneGroup } from "@homarr/definitions"; diff --git a/packages/api/src/router/home.ts b/packages/api/src/router/home.ts index fac941fa8..9c5824831 100644 --- a/packages/api/src/router/home.ts +++ b/packages/api/src/router/home.ts @@ -1,5 +1,7 @@ +import { eq, inArray, or } from "drizzle-orm"; + import { isProviderEnabled } from "@homarr/auth/server"; -import { db, eq, inArray, or } from "@homarr/db"; +import { db } from "@homarr/db"; import { apps, boards, diff --git a/packages/api/src/router/icons.ts b/packages/api/src/router/icons.ts index 04f15fc2d..23a92c74d 100644 --- a/packages/api/src/router/icons.ts +++ b/packages/api/src/router/icons.ts @@ -1,4 +1,5 @@ -import { and, like } from "@homarr/db"; +import { and, like } from "drizzle-orm"; + import { icons } from "@homarr/db/schema"; import { iconsFindSchema } from "@homarr/validation/icons"; diff --git a/packages/api/src/router/integration/integration-access.ts b/packages/api/src/router/integration/integration-access.ts index 78f8961e4..f13517f69 100644 --- a/packages/api/src/router/integration/integration-access.ts +++ b/packages/api/src/router/integration/integration-access.ts @@ -1,9 +1,10 @@ import { TRPCError } from "@trpc/server"; +import type { SQL } from "drizzle-orm"; +import { eq, inArray } from "drizzle-orm"; import type { Session } from "@homarr/auth"; import { constructIntegrationPermissions } from "@homarr/auth/shared"; -import type { Database, SQL } from "@homarr/db"; -import { eq, inArray } from "@homarr/db"; +import type { Database } from "@homarr/db"; import { groupMembers, integrationGroupPermissions, integrationUserPermissions } from "@homarr/db/schema"; import type { IntegrationPermission } from "@homarr/definitions"; diff --git a/packages/api/src/router/integration/integration-router.ts b/packages/api/src/router/integration/integration-router.ts index 4a12e062e..b96539416 100644 --- a/packages/api/src/router/integration/integration-router.ts +++ b/packages/api/src/router/integration/integration-router.ts @@ -1,11 +1,12 @@ import { TRPCError } from "@trpc/server"; +import { and, asc, eq, inArray, like, or } from "drizzle-orm"; import { z } from "zod/v4"; import { createId, objectEntries } from "@homarr/common"; import { decryptSecret, encryptSecret } from "@homarr/common/server"; import { createLogger } from "@homarr/core/infrastructure/logs"; +import { handleTransactionsAsync } from "@homarr/db"; import type { Database } from "@homarr/db"; -import { and, asc, eq, handleTransactionsAsync, inArray, like, or } from "@homarr/db"; import { apps, groupMembers, diff --git a/packages/api/src/router/invite.ts b/packages/api/src/router/invite.ts index 1b767748d..5b307eade 100644 --- a/packages/api/src/router/invite.ts +++ b/packages/api/src/router/invite.ts @@ -1,9 +1,9 @@ import { randomBytes } from "crypto"; import { TRPCError } from "@trpc/server"; +import { asc, eq } from "drizzle-orm"; import { z } from "zod/v4"; import { createId } from "@homarr/common"; -import { asc, eq } from "@homarr/db"; import { invites } from "@homarr/db/schema"; import { selectInviteSchema } from "@homarr/db/validationSchemas"; diff --git a/packages/api/src/router/medias/media-router.ts b/packages/api/src/router/medias/media-router.ts index a3f958ff5..b2a6e8260 100644 --- a/packages/api/src/router/medias/media-router.ts +++ b/packages/api/src/router/medias/media-router.ts @@ -1,9 +1,9 @@ import { TRPCError } from "@trpc/server"; +import type { InferInsertModel } from "drizzle-orm"; +import { and, desc, eq, like } from "drizzle-orm"; import { z } from "zod/v4"; import { createId } from "@homarr/common"; -import type { InferInsertModel } from "@homarr/db"; -import { and, desc, eq, like } from "@homarr/db"; import { iconRepositories, icons, medias } from "@homarr/db/schema"; import { createLocalImageUrl, LOCAL_ICON_REPOSITORY_SLUG, mapMediaToIcon } from "@homarr/icons/local"; import { byIdSchema, paginatedSchema } from "@homarr/validation/common"; diff --git a/packages/api/src/router/onboard/onboard-queries.ts b/packages/api/src/router/onboard/onboard-queries.ts index 15f205d8b..e9b5efa49 100644 --- a/packages/api/src/router/onboard/onboard-queries.ts +++ b/packages/api/src/router/onboard/onboard-queries.ts @@ -1,8 +1,9 @@ +import { eq } from "drizzle-orm"; + import { isProviderEnabled } from "@homarr/auth/server"; import { objectEntries } from "@homarr/common"; import type { MaybePromise } from "@homarr/common/types"; import type { Database } from "@homarr/db"; -import { eq } from "@homarr/db"; import { groups, onboarding } from "@homarr/db/schema"; import type { OnboardingStep } from "@homarr/definitions"; import { credentialsAdminGroup } from "@homarr/definitions"; 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 ddfc892a9..d4981105e 100644 --- a/packages/api/src/router/search-engine/search-engine-router.ts +++ b/packages/api/src/router/search-engine/search-engine-router.ts @@ -1,9 +1,9 @@ import { TRPCError } from "@trpc/server"; +import { asc, eq, like } from "drizzle-orm"; import { z } from "zod/v4"; import { createId } from "@homarr/common"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import { asc, eq, like } from "@homarr/db"; import { getServerSettingByKeyAsync, updateServerSettingByKeyAsync } from "@homarr/db/queries"; import { searchEngines, users } from "@homarr/db/schema"; import { createIntegrationAsync } from "@homarr/integrations"; diff --git a/packages/api/src/router/section/section-router.ts b/packages/api/src/router/section/section-router.ts index 81613f581..c0c777267 100644 --- a/packages/api/src/router/section/section-router.ts +++ b/packages/api/src/router/section/section-router.ts @@ -1,7 +1,7 @@ import { TRPCError } from "@trpc/server"; +import { and, eq } from "drizzle-orm"; import { z } from "zod/v4"; -import { and, eq } from "@homarr/db"; import { sectionCollapseStates, sections } from "@homarr/db/schema"; import { createTRPCRouter, protectedProcedure } from "../../trpc"; diff --git a/packages/api/src/router/test/board.spec.ts b/packages/api/src/router/test/board.spec.ts index 8bd21e556..0b5c1f73d 100644 --- a/packages/api/src/router/test/board.spec.ts +++ b/packages/api/src/router/test/board.spec.ts @@ -1,10 +1,11 @@ +import type { InferInsertModel } from "drizzle-orm"; +import { and, eq, not } from "drizzle-orm"; import SuperJSON from "superjson"; import { describe, expect, it, test, vi } from "vitest"; import type { Session } from "@homarr/auth"; import { createId } from "@homarr/common"; -import type { Database, InferInsertModel } from "@homarr/db"; -import { and, eq, not } from "@homarr/db"; +import type { Database } from "@homarr/db"; import { boardGroupPermissions, boards, diff --git a/packages/api/src/router/test/board/board-access.spec.ts b/packages/api/src/router/test/board/board-access.spec.ts index 9ba978381..1ee9e908c 100644 --- a/packages/api/src/router/test/board/board-access.spec.ts +++ b/packages/api/src/router/test/board/board-access.spec.ts @@ -1,8 +1,8 @@ +import { eq } from "drizzle-orm"; import { describe, expect, test, vi } from "vitest"; import * as authShared from "@homarr/auth/shared"; import { createId } from "@homarr/common"; -import { eq } from "@homarr/db"; import { boards, users } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; diff --git a/packages/api/src/router/test/group.spec.ts b/packages/api/src/router/test/group.spec.ts index 1f5b461cc..398bd5bb8 100644 --- a/packages/api/src/router/test/group.spec.ts +++ b/packages/api/src/router/test/group.spec.ts @@ -1,9 +1,9 @@ +import { eq } from "drizzle-orm"; import { describe, expect, test, vi } from "vitest"; import type { Session } from "@homarr/auth"; import * as env from "@homarr/auth/env"; import { createId } from "@homarr/common"; -import { eq } from "@homarr/db"; import { groupMembers, groupPermissions, groups, users } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; import type { GroupPermissionKey } from "@homarr/definitions"; diff --git a/packages/api/src/router/test/integration/integration-access.spec.ts b/packages/api/src/router/test/integration/integration-access.spec.ts index b5349558a..d33b5f860 100644 --- a/packages/api/src/router/test/integration/integration-access.spec.ts +++ b/packages/api/src/router/test/integration/integration-access.spec.ts @@ -1,8 +1,8 @@ +import { eq } from "drizzle-orm"; import { describe, expect, test, vi } from "vitest"; import * as authShared from "@homarr/auth/shared"; import { createId } from "@homarr/common"; -import { eq } from "@homarr/db"; import { integrations, users } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; diff --git a/packages/api/src/router/test/user.spec.ts b/packages/api/src/router/test/user.spec.ts index b3b262846..fe176e813 100644 --- a/packages/api/src/router/test/user.spec.ts +++ b/packages/api/src/router/test/user.spec.ts @@ -1,9 +1,9 @@ +import { eq } from "drizzle-orm"; import { describe, expect, it, test, vi } from "vitest"; import type { Session } from "@homarr/auth"; import { createId } from "@homarr/common"; import type { Database } from "@homarr/db"; -import { eq } from "@homarr/db"; import { invites, onboarding, users } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; import type { GroupPermissionKey, OnboardingStep } from "@homarr/definitions"; diff --git a/packages/api/src/router/user.ts b/packages/api/src/router/user.ts index 875ffe80b..0eb9b9f8c 100644 --- a/packages/api/src/router/user.ts +++ b/packages/api/src/router/user.ts @@ -1,11 +1,11 @@ import { TRPCError } from "@trpc/server"; +import { and, eq, like } from "drizzle-orm"; import { z } from "zod/v4"; import { createSaltAsync, hashPasswordAsync } from "@homarr/auth"; import { createId } from "@homarr/common"; import { createLogger } from "@homarr/core/infrastructure/logs"; import type { Database } from "@homarr/db"; -import { and, eq, like } from "@homarr/db"; import { getMaxGroupPositionAsync } from "@homarr/db/queries"; import { boards, groupMembers, groupPermissions, groups, invites, users } from "@homarr/db/schema"; import { selectUserSchema } from "@homarr/db/validationSchemas"; diff --git a/packages/api/src/router/user/change-search-preferences.ts b/packages/api/src/router/user/change-search-preferences.ts index 7f2793b9e..49ac2bff4 100644 --- a/packages/api/src/router/user/change-search-preferences.ts +++ b/packages/api/src/router/user/change-search-preferences.ts @@ -1,9 +1,9 @@ import { TRPCError } from "@trpc/server"; +import { eq } from "drizzle-orm"; import { z } from "zod/v4"; import type { Session } from "@homarr/auth"; import type { Modify } from "@homarr/common/types"; -import { eq } from "@homarr/db"; import type { Database } from "@homarr/db"; import { users } from "@homarr/db/schema"; import { userChangeSearchPreferencesSchema } from "@homarr/validation/user"; diff --git a/packages/api/src/router/widgets/notebook.ts b/packages/api/src/router/widgets/notebook.ts index 2f7229601..4318a2ed1 100644 --- a/packages/api/src/router/widgets/notebook.ts +++ b/packages/api/src/router/widgets/notebook.ts @@ -1,8 +1,8 @@ import { TRPCError } from "@trpc/server"; +import { eq } from "drizzle-orm"; import SuperJSON from "superjson"; import { z } from "zod/v4"; -import { eq } from "@homarr/db"; import { boards, items } from "@homarr/db/schema"; import { createTRPCRouter, protectedProcedure } from "../../trpc"; diff --git a/packages/auth/adapter.ts b/packages/auth/adapter.ts index 30984a403..d50707152 100644 --- a/packages/auth/adapter.ts +++ b/packages/auth/adapter.ts @@ -1,8 +1,8 @@ import type { Adapter } from "@auth/core/adapters"; import { DrizzleAdapter } from "@auth/drizzle-adapter"; +import { and, eq } from "drizzle-orm"; import type { Database } from "@homarr/db"; -import { and, eq } from "@homarr/db"; import { accounts, sessions, users } from "@homarr/db/schema"; import type { SupportedAuthProvider } from "@homarr/definitions"; diff --git a/packages/auth/callbacks.ts b/packages/auth/callbacks.ts index 8f1168ad8..003281992 100644 --- a/packages/auth/callbacks.ts +++ b/packages/auth/callbacks.ts @@ -1,9 +1,9 @@ import dayjs from "dayjs"; +import { eq, inArray } from "drizzle-orm"; import type { NextAuthConfig } from "next-auth"; import type { Session } from "@homarr/auth"; import type { Database } from "@homarr/db"; -import { eq, inArray } from "@homarr/db"; import { groupMembers, groupPermissions, users } from "@homarr/db/schema"; import { getPermissionsWithChildren } from "@homarr/definitions"; diff --git a/packages/auth/events.ts b/packages/auth/events.ts index 2593c418b..7f29bfc1e 100644 --- a/packages/auth/events.ts +++ b/packages/auth/events.ts @@ -1,9 +1,9 @@ import { cookies } from "next/headers"; import dayjs from "dayjs"; +import { and, eq, inArray } from "drizzle-orm"; import type { NextAuthConfig } from "next-auth"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import { and, eq, inArray } from "@homarr/db"; import type { Database } from "@homarr/db"; import { groupMembers, groups, users } from "@homarr/db/schema"; import { colorSchemeCookieKey, everyoneGroup } from "@homarr/definitions"; diff --git a/packages/auth/package.json b/packages/auth/package.json index 70d3a5d0e..adf9ea14d 100644 --- a/packages/auth/package.json +++ b/packages/auth/package.json @@ -32,6 +32,7 @@ "@homarr/validation": "workspace:^0.1.0", "bcrypt": "^6.0.0", "cookies": "^0.9.1", + "drizzle-orm": "^0.45.1", "ldapts": "8.0.24", "next": "16.0.10", "next-auth": "5.0.0-beta.30", diff --git a/packages/auth/permissions/integration-query-permissions.ts b/packages/auth/permissions/integration-query-permissions.ts index aff03d6e9..1fb298b45 100644 --- a/packages/auth/permissions/integration-query-permissions.ts +++ b/packages/auth/permissions/integration-query-permissions.ts @@ -1,7 +1,7 @@ +import { and, eq, inArray, or } from "drizzle-orm"; import type { Session } from "next-auth"; import type { Database } from "@homarr/db"; -import { and, eq, inArray, or } from "@homarr/db"; import { boards, boardUserPermissions, groupMembers } from "@homarr/db/schema"; import type { IntegrationPermission } from "@homarr/definitions"; diff --git a/packages/auth/permissions/integrations-with-permissions.ts b/packages/auth/permissions/integrations-with-permissions.ts index 76cae6c93..7a6766293 100644 --- a/packages/auth/permissions/integrations-with-permissions.ts +++ b/packages/auth/permissions/integrations-with-permissions.ts @@ -1,6 +1,7 @@ +import { eq, inArray } from "drizzle-orm"; import type { Session } from "next-auth"; -import { db, eq, inArray } from "@homarr/db"; +import { db } from "@homarr/db"; import { groupMembers, integrationGroupPermissions, integrationUserPermissions } from "@homarr/db/schema"; import { constructIntegrationPermissions } from "./integration-permissions"; diff --git a/packages/auth/permissions/test/integration-query-permissions.spec.ts b/packages/auth/permissions/test/integration-query-permissions.spec.ts index 4942c71cc..9f7522324 100644 --- a/packages/auth/permissions/test/integration-query-permissions.spec.ts +++ b/packages/auth/permissions/test/integration-query-permissions.spec.ts @@ -1,8 +1,8 @@ +import type { InferInsertModel } from "drizzle-orm"; import type { Session } from "next-auth"; import { describe, expect, test, vi } from "vitest"; import { createId } from "@homarr/common"; -import type { InferInsertModel } from "@homarr/db"; import { boardGroupPermissions, boards, boardUserPermissions, groupMembers, groups, users } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; diff --git a/packages/auth/providers/credentials/authorization/basic-authorization.ts b/packages/auth/providers/credentials/authorization/basic-authorization.ts index 04253d837..abe674546 100644 --- a/packages/auth/providers/credentials/authorization/basic-authorization.ts +++ b/packages/auth/providers/credentials/authorization/basic-authorization.ts @@ -1,9 +1,9 @@ import bcrypt from "bcrypt"; +import { and, eq } from "drizzle-orm"; import type { z } from "zod/v4"; import { createLogger } from "@homarr/core/infrastructure/logs"; import type { Database } from "@homarr/db"; -import { and, eq } from "@homarr/db"; import { users } from "@homarr/db/schema"; import type { userSignInSchema } from "@homarr/validation/user"; diff --git a/packages/auth/providers/credentials/authorization/ldap-authorization.ts b/packages/auth/providers/credentials/authorization/ldap-authorization.ts index 592fde682..ec614c86a 100644 --- a/packages/auth/providers/credentials/authorization/ldap-authorization.ts +++ b/packages/auth/providers/credentials/authorization/ldap-authorization.ts @@ -1,10 +1,11 @@ import { CredentialsSignin } from "@auth/core/errors"; +import { and, eq } from "drizzle-orm"; +import type { InferInsertModel } from "drizzle-orm"; import { z } from "zod/v4"; import { createId } from "@homarr/common"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import type { Database, InferInsertModel } from "@homarr/db"; -import { and, eq } from "@homarr/db"; +import type { Database } from "@homarr/db"; import { users } from "@homarr/db/schema"; import type { ldapSignInSchema } from "@homarr/validation/user"; diff --git a/packages/auth/providers/test/ldap-authorization.spec.ts b/packages/auth/providers/test/ldap-authorization.spec.ts index 0b9fd8935..6ad0a0c90 100644 --- a/packages/auth/providers/test/ldap-authorization.spec.ts +++ b/packages/auth/providers/test/ldap-authorization.spec.ts @@ -1,9 +1,9 @@ import { CredentialsSignin } from "@auth/core/errors"; +import { and, eq } from "drizzle-orm"; import { describe, expect, test, vi } from "vitest"; import { createId } from "@homarr/common"; import type { Database } from "@homarr/db"; -import { and, eq } from "@homarr/db"; import { groups, users } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; diff --git a/packages/auth/test/events.spec.ts b/packages/auth/test/events.spec.ts index ad6178ab2..527857689 100644 --- a/packages/auth/test/events.spec.ts +++ b/packages/auth/test/events.spec.ts @@ -1,9 +1,9 @@ import type { ResponseCookie } from "next/dist/compiled/@edge-runtime/cookies"; import type { ReadonlyRequestCookies } from "next/dist/server/web/spec-extension/adapters/request-cookies"; import { cookies } from "next/headers"; +import { eq } from "drizzle-orm"; import { describe, expect, test, vi } from "vitest"; -import { eq } from "@homarr/db"; import type { Database } from "@homarr/db"; import { groupMembers, groups, users } from "@homarr/db/schema"; import { createDb } from "@homarr/db/test"; diff --git a/packages/cli/package.json b/packages/cli/package.json index 5299843d0..d0ae890c2 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -28,7 +28,8 @@ "@homarr/common": "workspace:^0.1.0", "@homarr/db": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", - "dotenv": "^17.2.3" + "dotenv": "^17.2.3", + "drizzle-orm": "^0.45.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/cli/src/commands/fix-usernames.ts b/packages/cli/src/commands/fix-usernames.ts index 0f242c44d..206ea1b1c 100644 --- a/packages/cli/src/commands/fix-usernames.ts +++ b/packages/cli/src/commands/fix-usernames.ts @@ -1,6 +1,7 @@ import { command } from "@drizzle-team/brocli"; +import { eq } from "drizzle-orm"; -import { db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { users } from "@homarr/db/schema"; export const fixUsernames = command({ diff --git a/packages/cli/src/commands/recreate-admin.ts b/packages/cli/src/commands/recreate-admin.ts index 8c2b9fd8d..d5d24c6ac 100644 --- a/packages/cli/src/commands/recreate-admin.ts +++ b/packages/cli/src/commands/recreate-admin.ts @@ -1,9 +1,10 @@ import { command, string } from "@drizzle-team/brocli"; +import { and, count, eq } from "drizzle-orm"; import { createSaltAsync, hashPasswordAsync } from "@homarr/auth"; import { createId } from "@homarr/common"; import { generateSecureRandomToken } from "@homarr/common/server"; -import { and, count, db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { getMaxGroupPositionAsync } from "@homarr/db/queries"; import { groupMembers, groupPermissions, groups, users } from "@homarr/db/schema"; import { usernameSchema } from "@homarr/validation/user"; diff --git a/packages/cli/src/commands/reset-password.ts b/packages/cli/src/commands/reset-password.ts index ee4383205..a85650a98 100644 --- a/packages/cli/src/commands/reset-password.ts +++ b/packages/cli/src/commands/reset-password.ts @@ -1,8 +1,9 @@ import { command, string } from "@drizzle-team/brocli"; +import { and, eq } from "drizzle-orm"; import { hashPasswordAsync } from "@homarr/auth"; import { generateSecureRandomToken } from "@homarr/common/server"; -import { and, db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { sessions, users } from "@homarr/db/schema"; export const resetPassword = command({ diff --git a/packages/cron-jobs/package.json b/packages/cron-jobs/package.json index 1bf4e090e..e08af41ea 100644 --- a/packages/cron-jobs/package.json +++ b/packages/cron-jobs/package.json @@ -38,6 +38,7 @@ "@homarr/server-settings": "workspace:^0.1.0", "@homarr/translation": "workspace:^0.1.0", "@homarr/validation": "workspace:^0.1.0", + "drizzle-orm": "^0.45.1", "semver-parser": "^4.1.8" }, "devDependencies": { diff --git a/packages/cron-jobs/src/jobs/docker.ts b/packages/cron-jobs/src/jobs/docker.ts index 963f395bf..f04568e21 100644 --- a/packages/cron-jobs/src/jobs/docker.ts +++ b/packages/cron-jobs/src/jobs/docker.ts @@ -1,9 +1,10 @@ +import { eq } from "drizzle-orm"; import SuperJSON from "superjson"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error"; import { EVERY_MINUTE } from "@homarr/cron-jobs-core/expressions"; -import { db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { items } from "@homarr/db/schema"; import { dockerContainersRequestHandler } from "@homarr/request-handler/docker"; diff --git a/packages/cron-jobs/src/jobs/icons-updater.ts b/packages/cron-jobs/src/jobs/icons-updater.ts index b48c26ea6..45440d259 100644 --- a/packages/cron-jobs/src/jobs/icons-updater.ts +++ b/packages/cron-jobs/src/jobs/icons-updater.ts @@ -1,9 +1,11 @@ +import type { InferInsertModel } from "drizzle-orm"; +import { inArray, sql } from "drizzle-orm"; + import { createId, splitToNChunks, Stopwatch } from "@homarr/common"; import { env } from "@homarr/common/env"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { EVERY_WEEK } from "@homarr/cron-jobs-core/expressions"; -import type { InferInsertModel } from "@homarr/db"; -import { db, handleTransactionsAsync, inArray, sql } from "@homarr/db"; +import { db, handleTransactionsAsync } from "@homarr/db"; import { iconRepositories, icons } from "@homarr/db/schema"; import { fetchIconsAsync } from "@homarr/icons"; diff --git a/packages/cron-jobs/src/jobs/minecraft-server-status.ts b/packages/cron-jobs/src/jobs/minecraft-server-status.ts index e6c084702..34ff6cb50 100644 --- a/packages/cron-jobs/src/jobs/minecraft-server-status.ts +++ b/packages/cron-jobs/src/jobs/minecraft-server-status.ts @@ -1,7 +1,8 @@ +import { eq } from "drizzle-orm"; import SuperJSON from "superjson"; import { EVERY_5_MINUTES } from "@homarr/cron-jobs-core/expressions"; -import { db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { items } from "@homarr/db/schema"; import { minecraftServerStatusRequestHandler } from "@homarr/request-handler/minecraft-server-status"; diff --git a/packages/cron-jobs/src/jobs/rss-feeds.ts b/packages/cron-jobs/src/jobs/rss-feeds.ts index 2dda83499..c0a07cdbe 100644 --- a/packages/cron-jobs/src/jobs/rss-feeds.ts +++ b/packages/cron-jobs/src/jobs/rss-feeds.ts @@ -1,9 +1,10 @@ +import { eq } from "drizzle-orm"; import SuperJSON from "superjson"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error"; import { EVERY_10_MINUTES } from "@homarr/cron-jobs-core/expressions"; -import { db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { items } from "@homarr/db/schema"; // This import is done that way to avoid circular dependencies. import { rssFeedsRequestHandler } from "@homarr/request-handler/rss-feeds"; diff --git a/packages/cron-jobs/src/jobs/weather.ts b/packages/cron-jobs/src/jobs/weather.ts index 1b23ade4c..00ed9187e 100644 --- a/packages/cron-jobs/src/jobs/weather.ts +++ b/packages/cron-jobs/src/jobs/weather.ts @@ -1,9 +1,10 @@ +import { eq } from "drizzle-orm"; import SuperJSON from "superjson"; import { createLogger } from "@homarr/core/infrastructure/logs"; import { ErrorWithMetadata } from "@homarr/core/infrastructure/logs/error"; import { EVERY_10_MINUTES } from "@homarr/cron-jobs-core/expressions"; -import { db, eq } from "@homarr/db"; +import { db } from "@homarr/db"; import { items } from "@homarr/db/schema"; import { weatherRequestHandler } from "@homarr/request-handler/weather"; diff --git a/packages/db/index.ts b/packages/db/index.ts index d32e46b34..82caa3cb8 100644 --- a/packages/db/index.ts +++ b/packages/db/index.ts @@ -2,7 +2,6 @@ import { createDb } from "@homarr/core/infrastructure/db"; import { schema } from "./schema"; -export * from "drizzle-orm"; export type { HomarrDatabaseMysql, HomarrDatabasePostgresql } from "./driver"; export const db = createDb(schema); diff --git a/packages/db/queries/item.ts b/packages/db/queries/item.ts index a24c5b2b8..939882912 100644 --- a/packages/db/queries/item.ts +++ b/packages/db/queries/item.ts @@ -1,7 +1,8 @@ +import { inArray } from "drizzle-orm"; + import type { WidgetKind } from "@homarr/definitions"; import type { Database } from ".."; -import { inArray } from ".."; import type { inferSupportedIntegrations } from "../../widgets/src"; import { items } from "../schema"; diff --git a/packages/db/queries/server-setting.ts b/packages/db/queries/server-setting.ts index 371b18f29..b9f7d6a28 100644 --- a/packages/db/queries/server-setting.ts +++ b/packages/db/queries/server-setting.ts @@ -1,10 +1,10 @@ +import { eq } from "drizzle-orm"; import SuperJSON from "superjson"; import type { ServerSettings } from "@homarr/server-settings"; import { defaultServerSettings, defaultServerSettingsKeys } from "@homarr/server-settings"; import type { Database } from ".."; -import { eq } from ".."; import { serverSettings } from "../schema"; export const getServerSettingsAsync = async (db: Database) => { diff --git a/packages/icons/package.json b/packages/icons/package.json index 7460e3706..b3d9f1af6 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -25,7 +25,8 @@ "dependencies": { "@homarr/common": "workspace:^0.1.0", "@homarr/core": "workspace:^0.1.0", - "@homarr/db": "workspace:^0.1.0" + "@homarr/db": "workspace:^0.1.0", + "drizzle-orm": "^0.45.1" }, "devDependencies": { "@homarr/eslint-config": "workspace:^0.2.0", diff --git a/packages/icons/src/auto-icon-searcher.ts b/packages/icons/src/auto-icon-searcher.ts index 06f3d9b76..16ce4f366 100644 --- a/packages/icons/src/auto-icon-searcher.ts +++ b/packages/icons/src/auto-icon-searcher.ts @@ -1,5 +1,6 @@ +import { like } from "drizzle-orm"; + import type { Database } from "@homarr/db"; -import { like } from "@homarr/db"; import { icons } from "@homarr/db/schema"; export const getIconForName = (db: Database, name: string) => { diff --git a/packages/icons/src/repositories/local.icon-repository.ts b/packages/icons/src/repositories/local.icon-repository.ts index c0d9a5b27..9c0d4cbb4 100644 --- a/packages/icons/src/repositories/local.icon-repository.ts +++ b/packages/icons/src/repositories/local.icon-repository.ts @@ -1,6 +1,6 @@ import { createHash } from "crypto"; +import type { InferSelectModel } from "drizzle-orm"; -import type { InferSelectModel } from "@homarr/db"; import { db } from "@homarr/db"; import type { medias } from "@homarr/db/schema"; diff --git a/packages/old-import/package.json b/packages/old-import/package.json index 29eed2c1d..36feaddc3 100644 --- a/packages/old-import/package.json +++ b/packages/old-import/package.json @@ -40,6 +40,7 @@ "@mantine/core": "^8.3.10", "@mantine/hooks": "^8.3.10", "adm-zip": "0.5.16", + "drizzle-orm": "^0.45.1", "next": "16.0.10", "react": "19.2.3", "react-dom": "19.2.3", diff --git a/packages/old-import/src/import/import-single-oldmarr.ts b/packages/old-import/src/import/import-single-oldmarr.ts index 2ca6ed4c1..a5481973d 100644 --- a/packages/old-import/src/import/import-single-oldmarr.ts +++ b/packages/old-import/src/import/import-single-oldmarr.ts @@ -1,4 +1,6 @@ -import { handleTransactionsAsync, inArray } from "@homarr/db"; +import { inArray } from "drizzle-orm"; + +import { handleTransactionsAsync } from "@homarr/db"; import type { Database } from "@homarr/db"; import { apps } from "@homarr/db/schema"; import type { OldmarrConfig } from "@homarr/old-schema"; diff --git a/packages/old-import/src/mappers/map-app.ts b/packages/old-import/src/mappers/map-app.ts index cb4e6037d..b0e842bec 100644 --- a/packages/old-import/src/mappers/map-app.ts +++ b/packages/old-import/src/mappers/map-app.ts @@ -1,4 +1,5 @@ -import type { InferSelectModel } from "@homarr/db"; +import type { InferSelectModel } from "drizzle-orm"; + import type { apps } from "@homarr/db/schema"; import type { OldmarrApp } from "@homarr/old-schema"; diff --git a/packages/old-import/src/mappers/map-board.ts b/packages/old-import/src/mappers/map-board.ts index e9ce89921..2f34aff8d 100644 --- a/packages/old-import/src/mappers/map-board.ts +++ b/packages/old-import/src/mappers/map-board.ts @@ -1,5 +1,6 @@ +import type { InferInsertModel } from "drizzle-orm"; + import { createId } from "@homarr/common"; -import type { InferInsertModel } from "@homarr/db"; import type { boards } from "@homarr/db/schema"; import type { prepareMultipleImports } from "../prepare/prepare-multiple"; diff --git a/packages/old-import/src/mappers/map-item.ts b/packages/old-import/src/mappers/map-item.ts index 2e339a0b2..01a861d1e 100644 --- a/packages/old-import/src/mappers/map-item.ts +++ b/packages/old-import/src/mappers/map-item.ts @@ -1,8 +1,8 @@ +import type { InferInsertModel } from "drizzle-orm"; import SuperJSON from "superjson"; import { createId } from "@homarr/common"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import type { InferInsertModel } from "@homarr/db"; import type { itemLayouts, items } from "@homarr/db/schema"; import type { BoardSize, OldmarrApp, OldmarrWidget } from "@homarr/old-schema"; import { boardSizes } from "@homarr/old-schema"; diff --git a/packages/old-import/src/mappers/map-section.ts b/packages/old-import/src/mappers/map-section.ts index d27a8100d..f3ac95bcb 100644 --- a/packages/old-import/src/mappers/map-section.ts +++ b/packages/old-import/src/mappers/map-section.ts @@ -1,5 +1,6 @@ +import type { InferInsertModel } from "drizzle-orm"; + import { createId } from "@homarr/common"; -import type { InferInsertModel } from "@homarr/db"; import type { sections } from "@homarr/db/schema"; import type { OldmarrCategorySection, OldmarrEmptySection } from "@homarr/old-schema"; diff --git a/packages/old-import/src/mappers/map-user.ts b/packages/old-import/src/mappers/map-user.ts index f0b57cebf..478c62308 100644 --- a/packages/old-import/src/mappers/map-user.ts +++ b/packages/old-import/src/mappers/map-user.ts @@ -1,6 +1,7 @@ +import type { InferInsertModel } from "drizzle-orm"; + import { createId } from "@homarr/common"; import { decryptSecretWithKey } from "@homarr/common/server"; -import type { InferInsertModel } from "@homarr/db"; import type { users } from "@homarr/db/schema"; import type { OldmarrImportUser } from "../user-schema"; diff --git a/packages/old-import/src/prepare/prepare-apps.ts b/packages/old-import/src/prepare/prepare-apps.ts index 973ea3653..8499422c5 100644 --- a/packages/old-import/src/prepare/prepare-apps.ts +++ b/packages/old-import/src/prepare/prepare-apps.ts @@ -1,4 +1,5 @@ -import type { InferSelectModel } from "@homarr/db"; +import type { InferSelectModel } from "drizzle-orm"; + import type { apps } from "@homarr/db/schema"; import type { OldmarrConfig } from "@homarr/old-schema"; diff --git a/packages/request-handler/package.json b/packages/request-handler/package.json index d787f856f..d74fa2da7 100644 --- a/packages/request-handler/package.json +++ b/packages/request-handler/package.json @@ -31,6 +31,7 @@ "@homarr/integrations": "workspace:^0.1.0", "@homarr/redis": "workspace:^0.1.0", "dayjs": "^1.11.19", + "drizzle-orm": "^0.45.1", "octokit": "^5.0.5", "superjson": "2.2.6", "undici": "7.16.0", diff --git a/packages/request-handler/src/docker.ts b/packages/request-handler/src/docker.ts index 7a6d27be5..8cf40fe78 100644 --- a/packages/request-handler/src/docker.ts +++ b/packages/request-handler/src/docker.ts @@ -1,7 +1,8 @@ import dayjs from "dayjs"; import type { ContainerInfo, ContainerStats } from "dockerode"; +import { like, or } from "drizzle-orm"; -import { db, like, or } from "@homarr/db"; +import { db } from "@homarr/db"; import { icons } from "@homarr/db/schema"; import type { ContainerState } from "@homarr/docker"; import { dockerLabels, DockerSingleton } from "@homarr/docker"; diff --git a/packages/widgets/package.json b/packages/widgets/package.json index 2335f3267..971189cc6 100644 --- a/packages/widgets/package.json +++ b/packages/widgets/package.json @@ -70,6 +70,7 @@ "@tiptap/starter-kit": "^3.13.0", "clsx": "^2.1.1", "dayjs": "^1.11.19", + "drizzle-orm": "^0.45.1", "mantine-form-zod-resolver": "^1.3.0", "mantine-react-table": "2.0.0-beta.9", "next": "16.0.10", diff --git a/packages/widgets/src/app/prefetch.ts b/packages/widgets/src/app/prefetch.ts index 45300197b..f9be7f759 100644 --- a/packages/widgets/src/app/prefetch.ts +++ b/packages/widgets/src/app/prefetch.ts @@ -1,6 +1,8 @@ +import { inArray } from "drizzle-orm"; + import { trpc } from "@homarr/api/server"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import { db, inArray } from "@homarr/db"; +import { db } from "@homarr/db"; import { apps } from "@homarr/db/schema"; import type { Prefetch } from "../definition"; diff --git a/packages/widgets/src/bookmarks/prefetch.ts b/packages/widgets/src/bookmarks/prefetch.ts index 2c3970327..0fc47d6af 100644 --- a/packages/widgets/src/bookmarks/prefetch.ts +++ b/packages/widgets/src/bookmarks/prefetch.ts @@ -1,6 +1,8 @@ +import { inArray } from "drizzle-orm"; + import { trpc } from "@homarr/api/server"; import { createLogger } from "@homarr/core/infrastructure/logs"; -import { db, inArray } from "@homarr/db"; +import { db } from "@homarr/db"; import { apps } from "@homarr/db/schema"; import type { Prefetch } from "../definition"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 37b5546f9..46330d0a7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -277,6 +277,9 @@ importers: dotenv: specifier: ^17.2.3 version: 17.2.3 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) flag-icons: specifier: ^7.5.0 version: 7.5.0 @@ -431,6 +434,9 @@ importers: dotenv: specifier: ^17.2.3 version: 17.2.3 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) fastify: specifier: ^5.6.2 version: 5.6.2 @@ -547,6 +553,9 @@ importers: '@umami/node': specifier: ^0.4.0 version: 0.4.0 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) superjson: specifier: 2.2.6 version: 2.2.6 @@ -644,6 +653,9 @@ importers: '@trpc/tanstack-react-query': specifier: ^11.8.0 version: 11.8.0(@tanstack/react-query@5.90.12(react@19.2.3))(@trpc/client@11.8.0(@trpc/server@11.8.0(typescript@5.9.3))(typescript@5.9.3))(@trpc/server@11.8.0(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) lodash.clonedeep: specifier: ^4.5.0 version: 4.5.0 @@ -714,6 +726,9 @@ importers: cookies: specifier: ^0.9.1 version: 0.9.1 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) ldapts: specifier: 8.0.24 version: 8.0.24 @@ -806,6 +821,9 @@ importers: dotenv: specifier: ^17.2.3 version: 17.2.3 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1057,6 +1075,9 @@ importers: '@homarr/validation': specifier: workspace:^0.1.0 version: link:../validation + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) semver-parser: specifier: ^4.1.8 version: 4.1.8 @@ -1361,6 +1382,9 @@ importers: '@homarr/db': specifier: workspace:^0.1.0 version: link:../db + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) devDependencies: '@homarr/eslint-config': specifier: workspace:^0.2.0 @@ -1688,6 +1712,9 @@ importers: adm-zip: specifier: 0.5.16 version: 0.5.16 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) next: specifier: 16.0.10 version: 16.0.10(@babel/core@7.28.5)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(sass@1.96.0) @@ -1842,6 +1869,9 @@ importers: dayjs: specifier: ^1.11.19 version: 1.11.19 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) octokit: specifier: ^5.0.5 version: 5.0.5 @@ -2287,6 +2317,9 @@ importers: dayjs: specifier: ^1.11.19 version: 1.11.19 + drizzle-orm: + specifier: ^0.45.1 + version: 0.45.1(@libsql/client-wasm@0.14.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.16.0)(better-sqlite3@12.5.0)(gel@2.0.0)(mysql2@3.15.3)(pg@8.16.3) mantine-form-zod-resolver: specifier: ^1.3.0 version: 1.3.0(@mantine/form@8.3.10(react@19.2.3))(zod@4.2.1)