fix: mysql operations not working (#1728)
This commit is contained in:
@@ -4,7 +4,7 @@ import { Card, Center, Stack, Text, Title } from "@mantine/core";
|
|||||||
import { auth } from "@homarr/auth/next";
|
import { auth } from "@homarr/auth/next";
|
||||||
import { isProviderEnabled } from "@homarr/auth/server";
|
import { isProviderEnabled } from "@homarr/auth/server";
|
||||||
import { and, db, eq } from "@homarr/db";
|
import { and, db, eq } from "@homarr/db";
|
||||||
import { invites } from "@homarr/db/schema/sqlite";
|
import { invites } from "@homarr/db/schema";
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
|
|
||||||
import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo";
|
import { HomarrLogoWithTitle } from "~/components/layout/logo/homarr-logo";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { IconHomeOff } from "@tabler/icons-react";
|
|||||||
|
|
||||||
import { auth } from "@homarr/auth/next";
|
import { auth } from "@homarr/auth/next";
|
||||||
import { db } from "@homarr/db";
|
import { db } from "@homarr/db";
|
||||||
import { boards } from "@homarr/db/schema/sqlite";
|
import { boards } from "@homarr/db/schema";
|
||||||
import { getI18n } from "@homarr/translation/server";
|
import { getI18n } from "@homarr/translation/server";
|
||||||
|
|
||||||
import type { BoardNotFoundProps } from "~/components/board/not-found";
|
import type { BoardNotFoundProps } from "~/components/board/not-found";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { notFound } from "next/navigation";
|
|||||||
import { auth } from "@homarr/auth/next";
|
import { auth } from "@homarr/auth/next";
|
||||||
import { isProviderEnabled } from "@homarr/auth/server";
|
import { isProviderEnabled } from "@homarr/auth/server";
|
||||||
import { db, inArray } from "@homarr/db";
|
import { db, inArray } from "@homarr/db";
|
||||||
import { groups } from "@homarr/db/schema/sqlite";
|
import { groups } from "@homarr/db/schema";
|
||||||
import { everyoneGroup } from "@homarr/definitions";
|
import { everyoneGroup } from "@homarr/definitions";
|
||||||
import { getScopedI18n } from "@homarr/translation/server";
|
import { getScopedI18n } from "@homarr/translation/server";
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { hashPasswordAsync } from "@homarr/auth";
|
|||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import { createSessionAsync } from "@homarr/auth/server";
|
import { createSessionAsync } from "@homarr/auth/server";
|
||||||
import { db, eq } from "@homarr/db";
|
import { db, eq } from "@homarr/db";
|
||||||
import { apiKeys } from "@homarr/db/schema/sqlite";
|
import { apiKeys } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
|
|
||||||
const handlerAsync = async (req: NextRequest) => {
|
const handlerAsync = async (req: NextRequest) => {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { NextResponse } from "next/server";
|
|||||||
import type { NextRequest } from "next/server";
|
import type { NextRequest } from "next/server";
|
||||||
|
|
||||||
import { db, eq } from "@homarr/db";
|
import { db, eq } from "@homarr/db";
|
||||||
import { medias } from "@homarr/db/schema/sqlite";
|
import { medias } from "@homarr/db/schema";
|
||||||
|
|
||||||
export async function GET(_req: NextRequest, { params }: { params: { id: string } }) {
|
export async function GET(_req: NextRequest, { params }: { params: { id: string } }) {
|
||||||
const image = await db.query.medias.findFirst({
|
const image = await db.query.medias.findFirst({
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { Umami } from "@umami/node";
|
|||||||
|
|
||||||
import { count, db } from "@homarr/db";
|
import { count, db } from "@homarr/db";
|
||||||
import { getServerSettingByKeyAsync } from "@homarr/db/queries";
|
import { getServerSettingByKeyAsync } from "@homarr/db/queries";
|
||||||
import { integrations, items, users } from "@homarr/db/schema/sqlite";
|
import { integrations, items, users } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import type { defaultServerSettings } from "@homarr/server-settings";
|
import type { defaultServerSettings } from "@homarr/server-settings";
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import { decryptSecret } from "@homarr/common/server";
|
|||||||
import type { AtLeastOneOf } from "@homarr/common/types";
|
import type { AtLeastOneOf } from "@homarr/common/types";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { and, eq, inArray } from "@homarr/db";
|
import { and, eq, inArray } from "@homarr/db";
|
||||||
import { integrations } from "@homarr/db/schema/sqlite";
|
import { integrations } from "@homarr/db/schema";
|
||||||
import type { IntegrationKind } from "@homarr/definitions";
|
import type { IntegrationKind } from "@homarr/definitions";
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { TRPCError } from "@trpc/server";
|
import { TRPCError } from "@trpc/server";
|
||||||
|
|
||||||
import { and, eq } from "@homarr/db";
|
import { and, eq } from "@homarr/db";
|
||||||
import { items } from "@homarr/db/schema/sqlite";
|
import { items } from "@homarr/db/schema";
|
||||||
import type { WidgetKind } from "@homarr/definitions";
|
import type { WidgetKind } from "@homarr/definitions";
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { createSaltAsync, hashPasswordAsync } from "@homarr/auth";
|
import { createSaltAsync, hashPasswordAsync } from "@homarr/auth";
|
||||||
import { generateSecureRandomToken } from "@homarr/common/server";
|
import { generateSecureRandomToken } from "@homarr/common/server";
|
||||||
import { createId, db } from "@homarr/db";
|
import { createId, db } from "@homarr/db";
|
||||||
import { apiKeys } from "@homarr/db/schema/sqlite";
|
import { apiKeys } from "@homarr/db/schema";
|
||||||
|
|
||||||
import { createTRPCRouter, permissionRequiredProcedure } from "../trpc";
|
import { createTRPCRouter, permissionRequiredProcedure } from "../trpc";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { TRPCError } from "@trpc/server";
|
import { TRPCError } from "@trpc/server";
|
||||||
|
|
||||||
import { asc, createId, eq, inArray, like } from "@homarr/db";
|
import { asc, createId, eq, inArray, like } from "@homarr/db";
|
||||||
import { apps } from "@homarr/db/schema/sqlite";
|
import { apps } from "@homarr/db/schema";
|
||||||
import { selectAppSchema } from "@homarr/db/validationSchemas";
|
import { selectAppSchema } from "@homarr/db/validationSchemas";
|
||||||
import { validation, z } from "@homarr/validation";
|
import { validation, z } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import SuperJSON from "superjson";
|
|||||||
|
|
||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import { db, eq, or } from "@homarr/db";
|
import { db, eq, or } from "@homarr/db";
|
||||||
import { items } from "@homarr/db/schema/sqlite";
|
import { items } from "@homarr/db/schema";
|
||||||
|
|
||||||
import type { WidgetComponentProps } from "../../../../widgets/src";
|
import type { WidgetComponentProps } from "../../../../widgets/src";
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import {
|
|||||||
items,
|
items,
|
||||||
sections,
|
sections,
|
||||||
users,
|
users,
|
||||||
} from "@homarr/db/schema/sqlite";
|
} from "@homarr/db/schema";
|
||||||
import type { WidgetKind } from "@homarr/definitions";
|
import type { WidgetKind } from "@homarr/definitions";
|
||||||
import { getPermissionsWithParents, widgetKinds } from "@homarr/definitions";
|
import { getPermissionsWithParents, widgetKinds } from "@homarr/definitions";
|
||||||
import { importOldmarrAsync } from "@homarr/old-import";
|
import { importOldmarrAsync } from "@homarr/old-import";
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import type { Session } from "@homarr/auth";
|
|||||||
import { constructBoardPermissions } from "@homarr/auth/shared";
|
import { constructBoardPermissions } from "@homarr/auth/shared";
|
||||||
import type { Database, SQL } from "@homarr/db";
|
import type { Database, SQL } from "@homarr/db";
|
||||||
import { eq, inArray } from "@homarr/db";
|
import { eq, inArray } from "@homarr/db";
|
||||||
import { boardGroupPermissions, boardUserPermissions, groupMembers } from "@homarr/db/schema/sqlite";
|
import { boardGroupPermissions, boardUserPermissions, groupMembers } from "@homarr/db/schema";
|
||||||
import type { BoardPermission } from "@homarr/definitions";
|
import type { BoardPermission } from "@homarr/definitions";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import type Docker from "dockerode";
|
|||||||
import type { Container } from "dockerode";
|
import type { Container } from "dockerode";
|
||||||
|
|
||||||
import { db, like, or } from "@homarr/db";
|
import { db, like, or } from "@homarr/db";
|
||||||
import { icons } from "@homarr/db/schema/sqlite";
|
import { icons } from "@homarr/db/schema";
|
||||||
import type { DockerContainerState } from "@homarr/definitions";
|
import type { DockerContainerState } from "@homarr/definitions";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import { createCacheChannel } from "@homarr/redis";
|
import { createCacheChannel } from "@homarr/redis";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { TRPCError } from "@trpc/server";
|
|||||||
|
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { and, createId, eq, like, not, sql } from "@homarr/db";
|
import { and, createId, eq, like, not, sql } from "@homarr/db";
|
||||||
import { groupMembers, groupPermissions, groups } from "@homarr/db/schema/sqlite";
|
import { groupMembers, groupPermissions, groups } from "@homarr/db/schema";
|
||||||
import { everyoneGroup } from "@homarr/definitions";
|
import { everyoneGroup } from "@homarr/definitions";
|
||||||
import { validation, z } from "@homarr/validation";
|
import { validation, z } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import type { AnySQLiteTable } from "drizzle-orm/sqlite-core";
|
|||||||
import { isProviderEnabled } from "@homarr/auth/server";
|
import { isProviderEnabled } from "@homarr/auth/server";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { count } from "@homarr/db";
|
import { count } from "@homarr/db";
|
||||||
import { apps, boards, groups, integrations, invites, users } from "@homarr/db/schema/sqlite";
|
import { apps, boards, groups, integrations, invites, users } from "@homarr/db/schema";
|
||||||
|
|
||||||
import { createTRPCRouter, publicProcedure } from "../trpc";
|
import { createTRPCRouter, publicProcedure } from "../trpc";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { count, like } from "@homarr/db";
|
import { count, like } from "@homarr/db";
|
||||||
import { icons } from "@homarr/db/schema/sqlite";
|
import { icons } from "@homarr/db/schema";
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
import { createTRPCRouter, publicProcedure } from "../trpc";
|
import { createTRPCRouter, publicProcedure } from "../trpc";
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import type { Session } from "@homarr/auth";
|
|||||||
import { constructIntegrationPermissions } from "@homarr/auth/shared";
|
import { constructIntegrationPermissions } from "@homarr/auth/shared";
|
||||||
import type { Database, SQL } from "@homarr/db";
|
import type { Database, SQL } from "@homarr/db";
|
||||||
import { eq, inArray } from "@homarr/db";
|
import { eq, inArray } from "@homarr/db";
|
||||||
import { groupMembers, integrationGroupPermissions, integrationUserPermissions } from "@homarr/db/schema/sqlite";
|
import { groupMembers, integrationGroupPermissions, integrationUserPermissions } from "@homarr/db/schema";
|
||||||
import type { IntegrationPermission } from "@homarr/definitions";
|
import type { IntegrationPermission } from "@homarr/definitions";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import {
|
|||||||
integrations,
|
integrations,
|
||||||
integrationSecrets,
|
integrationSecrets,
|
||||||
integrationUserPermissions,
|
integrationUserPermissions,
|
||||||
} from "@homarr/db/schema/sqlite";
|
} from "@homarr/db/schema";
|
||||||
import type { IntegrationSecretKind } from "@homarr/definitions";
|
import type { IntegrationSecretKind } from "@homarr/definitions";
|
||||||
import {
|
import {
|
||||||
getIntegrationKindsByCategory,
|
getIntegrationKindsByCategory,
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { decryptSecret } from "@homarr/common/server";
|
import { decryptSecret } from "@homarr/common/server";
|
||||||
import type { Integration } from "@homarr/db/schema/sqlite";
|
import type { Integration } from "@homarr/db/schema";
|
||||||
import type { IntegrationKind, IntegrationSecretKind } from "@homarr/definitions";
|
import type { IntegrationKind, IntegrationSecretKind } from "@homarr/definitions";
|
||||||
import { getAllSecretKindOptions } from "@homarr/definitions";
|
import { getAllSecretKindOptions } from "@homarr/definitions";
|
||||||
import { integrationCreator, IntegrationTestConnectionError } from "@homarr/integrations";
|
import { integrationCreator, IntegrationTestConnectionError } from "@homarr/integrations";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { randomBytes } from "crypto";
|
|||||||
import { TRPCError } from "@trpc/server";
|
import { TRPCError } from "@trpc/server";
|
||||||
|
|
||||||
import { asc, createId, eq } from "@homarr/db";
|
import { asc, createId, eq } from "@homarr/db";
|
||||||
import { invites } from "@homarr/db/schema/sqlite";
|
import { invites } from "@homarr/db/schema";
|
||||||
import { selectInviteSchema } from "@homarr/db/validationSchemas";
|
import { selectInviteSchema } from "@homarr/db/validationSchemas";
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { TRPCError } from "@trpc/server";
|
import { TRPCError } from "@trpc/server";
|
||||||
|
|
||||||
import { and, createId, desc, eq, like } from "@homarr/db";
|
import { and, createId, desc, eq, like } from "@homarr/db";
|
||||||
import { medias } from "@homarr/db/schema/sqlite";
|
import { medias } from "@homarr/db/schema";
|
||||||
import { validation, z } from "@homarr/validation";
|
import { validation, z } from "@homarr/validation";
|
||||||
|
|
||||||
import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc";
|
import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { objectEntries } from "@homarr/common";
|
|||||||
import type { MaybePromise } from "@homarr/common/types";
|
import type { MaybePromise } from "@homarr/common/types";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { eq } from "@homarr/db";
|
import { eq } from "@homarr/db";
|
||||||
import { groups, onboarding } from "@homarr/db/schema/sqlite";
|
import { groups, onboarding } from "@homarr/db/schema";
|
||||||
import type { OnboardingStep } from "@homarr/definitions";
|
import type { OnboardingStep } from "@homarr/definitions";
|
||||||
import { credentialsAdminGroup } from "@homarr/definitions";
|
import { credentialsAdminGroup } from "@homarr/definitions";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { onboarding } from "@homarr/db/schema/sqlite";
|
import { onboarding } from "@homarr/db/schema";
|
||||||
import { onboardingSteps } from "@homarr/definitions";
|
import { onboardingSteps } from "@homarr/definitions";
|
||||||
import { z, zodEnumFromArray } from "@homarr/validation";
|
import { z, zodEnumFromArray } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { TRPCError } from "@trpc/server";
|
import { TRPCError } from "@trpc/server";
|
||||||
|
|
||||||
import { createId, eq, like, sql } from "@homarr/db";
|
import { createId, eq, like, sql } from "@homarr/db";
|
||||||
import { searchEngines } from "@homarr/db/schema/sqlite";
|
import { searchEngines } from "@homarr/db/schema";
|
||||||
import { validation } from "@homarr/validation";
|
import { validation } from "@homarr/validation";
|
||||||
|
|
||||||
import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc";
|
import { createTRPCRouter, permissionRequiredProcedure, protectedProcedure } from "../../trpc";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
|
|
||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import { apps } from "@homarr/db/schema/sqlite";
|
import { apps } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
import type { GroupPermissionKey } from "@homarr/definitions";
|
import type { GroupPermissionKey } from "@homarr/definitions";
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import {
|
|||||||
sections,
|
sections,
|
||||||
serverSettings,
|
serverSettings,
|
||||||
users,
|
users,
|
||||||
} from "@homarr/db/schema/sqlite";
|
} from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
import type { BoardPermission, GroupPermissionKey } from "@homarr/definitions";
|
import type { BoardPermission, GroupPermissionKey } from "@homarr/definitions";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
|
|
||||||
import * as authShared from "@homarr/auth/shared";
|
import * as authShared from "@homarr/auth/shared";
|
||||||
import { createId, eq } from "@homarr/db";
|
import { createId, eq } from "@homarr/db";
|
||||||
import { boards, users } from "@homarr/db/schema/sqlite";
|
import { boards, users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
|
|
||||||
import { throwIfActionForbiddenAsync } from "../../board/board-access";
|
import { throwIfActionForbiddenAsync } from "../../board/board-access";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import * as env from "@homarr/auth/env.mjs";
|
import * as env from "@homarr/auth/env.mjs";
|
||||||
import { createId, eq } from "@homarr/db";
|
import { createId, eq } from "@homarr/db";
|
||||||
import { groupMembers, groupPermissions, groups, users } from "@homarr/db/schema/sqlite";
|
import { groupMembers, groupPermissions, groups, users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
import type { GroupPermissionKey } from "@homarr/definitions";
|
import type { GroupPermissionKey } from "@homarr/definitions";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
|
|
||||||
import * as authShared from "@homarr/auth/shared";
|
import * as authShared from "@homarr/auth/shared";
|
||||||
import { createId, eq } from "@homarr/db";
|
import { createId, eq } from "@homarr/db";
|
||||||
import { integrations, users } from "@homarr/db/schema/sqlite";
|
import { integrations, users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
|
|
||||||
import { throwIfActionForbiddenAsync } from "../../integration/integration-access";
|
import { throwIfActionForbiddenAsync } from "../../integration/integration-access";
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import { encryptSecret } from "@homarr/common/server";
|
import { encryptSecret } from "@homarr/common/server";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import { integrations, integrationSecrets } from "@homarr/db/schema/sqlite";
|
import { integrations, integrationSecrets } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
import type { GroupPermissionKey } from "@homarr/definitions";
|
import type { GroupPermissionKey } from "@homarr/definitions";
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
|
|
||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import { invites, users } from "@homarr/db/schema/sqlite";
|
import { invites, users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
|
|
||||||
import { inviteRouter } from "../invite";
|
import { inviteRouter } from "../invite";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
|
|
||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import { serverSettings } from "@homarr/db/schema/sqlite";
|
import { serverSettings } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
import { defaultServerSettings, defaultServerSettingsKeys } from "@homarr/server-settings";
|
import { defaultServerSettings, defaultServerSettingsKeys } from "@homarr/server-settings";
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { describe, expect, it, test, vi } from "vitest";
|
|||||||
|
|
||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { createId, eq, schema } from "@homarr/db";
|
import { createId, eq } from "@homarr/db";
|
||||||
import { onboarding, users } from "@homarr/db/schema/sqlite";
|
import { invites, onboarding, users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
import type { GroupPermissionKey, OnboardingStep } from "@homarr/definitions";
|
import type { GroupPermissionKey, OnboardingStep } from "@homarr/definitions";
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ describe("register should create a user with valid invitation", () => {
|
|||||||
await db.insert(users).values({
|
await db.insert(users).values({
|
||||||
id: userId,
|
id: userId,
|
||||||
});
|
});
|
||||||
await db.insert(schema.invites).values({
|
await db.insert(invites).values({
|
||||||
id: inviteId,
|
id: inviteId,
|
||||||
token: inviteToken,
|
token: inviteToken,
|
||||||
creatorId: userId,
|
creatorId: userId,
|
||||||
@@ -176,7 +176,7 @@ describe("register should create a user with valid invitation", () => {
|
|||||||
await db.insert(users).values({
|
await db.insert(users).values({
|
||||||
id: userId,
|
id: userId,
|
||||||
});
|
});
|
||||||
await db.insert(schema.invites).values({
|
await db.insert(invites).values({
|
||||||
id: inviteId,
|
id: inviteId,
|
||||||
token: inviteToken,
|
token: inviteToken,
|
||||||
creatorId: userId,
|
creatorId: userId,
|
||||||
@@ -211,7 +211,7 @@ describe("editProfile shoud update user", () => {
|
|||||||
|
|
||||||
const emailVerified = new Date(2024, 0, 5);
|
const emailVerified = new Date(2024, 0, 5);
|
||||||
|
|
||||||
await db.insert(schema.users).values({
|
await db.insert(users).values({
|
||||||
id: defaultOwnerId,
|
id: defaultOwnerId,
|
||||||
name: "TEST 1",
|
name: "TEST 1",
|
||||||
email: "abc@gmail.com",
|
email: "abc@gmail.com",
|
||||||
@@ -226,7 +226,7 @@ describe("editProfile shoud update user", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// assert
|
// assert
|
||||||
const user = await db.select().from(schema.users).where(eq(schema.users.id, defaultOwnerId));
|
const user = await db.select().from(users).where(eq(users.id, defaultOwnerId));
|
||||||
|
|
||||||
expect(user).toHaveLength(1);
|
expect(user).toHaveLength(1);
|
||||||
expect(user[0]).containSubset({
|
expect(user[0]).containSubset({
|
||||||
@@ -245,7 +245,7 @@ describe("editProfile shoud update user", () => {
|
|||||||
session: defaultSession,
|
session: defaultSession,
|
||||||
});
|
});
|
||||||
|
|
||||||
await db.insert(schema.users).values({
|
await db.insert(users).values({
|
||||||
id: defaultOwnerId,
|
id: defaultOwnerId,
|
||||||
name: "TEST 1",
|
name: "TEST 1",
|
||||||
email: "abc@gmail.com",
|
email: "abc@gmail.com",
|
||||||
@@ -260,7 +260,7 @@ describe("editProfile shoud update user", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// assert
|
// assert
|
||||||
const user = await db.select().from(schema.users).where(eq(schema.users.id, defaultOwnerId));
|
const user = await db.select().from(users).where(eq(users.id, defaultOwnerId));
|
||||||
|
|
||||||
expect(user).toHaveLength(1);
|
expect(user).toHaveLength(1);
|
||||||
expect(user[0]).containSubset({
|
expect(user[0]).containSubset({
|
||||||
@@ -295,11 +295,11 @@ describe("delete should delete user", () => {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
await db.insert(schema.users).values(initialUsers);
|
await db.insert(users).values(initialUsers);
|
||||||
|
|
||||||
await caller.delete({ userId: defaultOwnerId });
|
await caller.delete({ userId: defaultOwnerId });
|
||||||
|
|
||||||
const usersInDb = await db.select().from(schema.users);
|
const usersInDb = await db.select().from(users);
|
||||||
expect(usersInDb).toHaveLength(2);
|
expect(usersInDb).toHaveLength(2);
|
||||||
expect(usersInDb[0]).containSubset(initialUsers[0]);
|
expect(usersInDb[0]).containSubset(initialUsers[0]);
|
||||||
expect(usersInDb[1]).containSubset(initialUsers[2]);
|
expect(usersInDb[1]).containSubset(initialUsers[2]);
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ import { TRPCError } from "@trpc/server";
|
|||||||
|
|
||||||
import { createSaltAsync, hashPasswordAsync } from "@homarr/auth";
|
import { createSaltAsync, hashPasswordAsync } from "@homarr/auth";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { and, createId, eq, like, schema } from "@homarr/db";
|
import { and, createId, eq, like } from "@homarr/db";
|
||||||
import { groupMembers, groupPermissions, groups, invites, users } from "@homarr/db/schema/sqlite";
|
import { groupMembers, groupPermissions, groups, invites, users } from "@homarr/db/schema";
|
||||||
import { selectUserSchema } from "@homarr/db/validationSchemas";
|
import { selectUserSchema } from "@homarr/db/validationSchemas";
|
||||||
import { credentialsAdminGroup } from "@homarr/definitions";
|
import { credentialsAdminGroup } from "@homarr/definitions";
|
||||||
import type { SupportedAuthProvider } from "@homarr/definitions";
|
import type { SupportedAuthProvider } from "@homarr/definitions";
|
||||||
@@ -509,7 +509,7 @@ const createUserAsync = async (db: Database, input: Omit<z.infer<typeof validati
|
|||||||
const username = input.username.toLowerCase();
|
const username = input.username.toLowerCase();
|
||||||
|
|
||||||
const userId = createId();
|
const userId = createId();
|
||||||
await db.insert(schema.users).values({
|
await db.insert(users).values({
|
||||||
id: userId,
|
id: userId,
|
||||||
name: username,
|
name: username,
|
||||||
email: input.email,
|
email: input.email,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { observable } from "@trpc/server/observable";
|
import { observable } from "@trpc/server/observable";
|
||||||
|
|
||||||
import type { Modify } from "@homarr/common/types";
|
import type { Modify } from "@homarr/common/types";
|
||||||
import type { Integration } from "@homarr/db/schema/sqlite";
|
import type { Integration } from "@homarr/db/schema";
|
||||||
import type { IntegrationKindByCategory } from "@homarr/definitions";
|
import type { IntegrationKindByCategory } from "@homarr/definitions";
|
||||||
import { getIntegrationKindsByCategory } from "@homarr/definitions";
|
import { getIntegrationKindsByCategory } from "@homarr/definitions";
|
||||||
import { integrationCreator } from "@homarr/integrations";
|
import { integrationCreator } from "@homarr/integrations";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { observable } from "@trpc/server/observable";
|
import { observable } from "@trpc/server/observable";
|
||||||
|
|
||||||
import type { Modify } from "@homarr/common/types";
|
import type { Modify } from "@homarr/common/types";
|
||||||
import type { Integration } from "@homarr/db/schema/sqlite";
|
import type { Integration } from "@homarr/db/schema";
|
||||||
import type { IntegrationKindByCategory } from "@homarr/definitions";
|
import type { IntegrationKindByCategory } from "@homarr/definitions";
|
||||||
import { getIntegrationKindsByCategory } from "@homarr/definitions";
|
import { getIntegrationKindsByCategory } from "@homarr/definitions";
|
||||||
import type { DownloadClientJobsAndStatus } from "@homarr/integrations";
|
import type { DownloadClientJobsAndStatus } from "@homarr/integrations";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { TRPCError } from "@trpc/server";
|
|||||||
import SuperJSON from "superjson";
|
import SuperJSON from "superjson";
|
||||||
|
|
||||||
import { eq } from "@homarr/db";
|
import { eq } from "@homarr/db";
|
||||||
import { items } from "@homarr/db/schema/sqlite";
|
import { items } from "@homarr/db/schema";
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|
||||||
import { createTRPCRouter, protectedProcedure } from "../../trpc";
|
import { createTRPCRouter, protectedProcedure } from "../../trpc";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { DrizzleAdapter } from "@auth/drizzle-adapter";
|
|||||||
|
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { and, eq } from "@homarr/db";
|
import { and, eq } from "@homarr/db";
|
||||||
import { accounts, sessions, users } from "@homarr/db/schema/sqlite";
|
import { accounts, sessions, users } from "@homarr/db/schema";
|
||||||
import type { SupportedAuthProvider } from "@homarr/definitions";
|
import type { SupportedAuthProvider } from "@homarr/definitions";
|
||||||
|
|
||||||
export const createAdapter = (db: Database, provider: SupportedAuthProvider | "unknown"): Adapter => {
|
export const createAdapter = (db: Database, provider: SupportedAuthProvider | "unknown"): Adapter => {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import type { NextAuthConfig } from "next-auth";
|
|||||||
import type { Session } from "@homarr/auth";
|
import type { Session } from "@homarr/auth";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { eq, inArray } from "@homarr/db";
|
import { eq, inArray } from "@homarr/db";
|
||||||
import { groupMembers, groupPermissions, users } from "@homarr/db/schema/sqlite";
|
import { groupMembers, groupPermissions, users } from "@homarr/db/schema";
|
||||||
import { getPermissionsWithChildren } from "@homarr/definitions";
|
import { getPermissionsWithChildren } from "@homarr/definitions";
|
||||||
|
|
||||||
export const getCurrentUserPermissionsAsync = async (db: Database, userId: string) => {
|
export const getCurrentUserPermissionsAsync = async (db: Database, userId: string) => {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import type { NextAuthConfig } from "next-auth";
|
|||||||
|
|
||||||
import { and, eq, inArray } from "@homarr/db";
|
import { and, eq, inArray } from "@homarr/db";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { groupMembers, groups, users } from "@homarr/db/schema/sqlite";
|
import { groupMembers, groups, users } from "@homarr/db/schema";
|
||||||
import { colorSchemeCookieKey, everyoneGroup } from "@homarr/definitions";
|
import { colorSchemeCookieKey, everyoneGroup } from "@homarr/definitions";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import type { Session } from "next-auth";
|
|||||||
|
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { and, eq, inArray, or } from "@homarr/db";
|
import { and, eq, inArray, or } from "@homarr/db";
|
||||||
import { boards, boardUserPermissions, groupMembers } from "@homarr/db/schema/sqlite";
|
import { boards, boardUserPermissions, groupMembers } from "@homarr/db/schema";
|
||||||
import type { IntegrationPermission } from "@homarr/definitions";
|
import type { IntegrationPermission } from "@homarr/definitions";
|
||||||
|
|
||||||
import { constructIntegrationPermissions } from "./integration-permissions";
|
import { constructIntegrationPermissions } from "./integration-permissions";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { Session } from "next-auth";
|
import type { Session } from "next-auth";
|
||||||
|
|
||||||
import { db, eq, inArray } from "@homarr/db";
|
import { db, eq, inArray } from "@homarr/db";
|
||||||
import { groupMembers, integrationGroupPermissions, integrationUserPermissions } from "@homarr/db/schema/sqlite";
|
import { groupMembers, integrationGroupPermissions, integrationUserPermissions } from "@homarr/db/schema";
|
||||||
|
|
||||||
import { constructIntegrationPermissions } from "./integration-permissions";
|
import { constructIntegrationPermissions } from "./integration-permissions";
|
||||||
|
|
||||||
|
|||||||
@@ -3,14 +3,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
|
|
||||||
import type { InferInsertModel } from "@homarr/db";
|
import type { InferInsertModel } from "@homarr/db";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import {
|
import { boardGroupPermissions, boards, boardUserPermissions, groupMembers, groups, users } from "@homarr/db/schema";
|
||||||
boardGroupPermissions,
|
|
||||||
boards,
|
|
||||||
boardUserPermissions,
|
|
||||||
groupMembers,
|
|
||||||
groups,
|
|
||||||
users,
|
|
||||||
} from "@homarr/db/schema/sqlite";
|
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
|
|
||||||
import * as integrationPermissions from "../integration-permissions";
|
import * as integrationPermissions from "../integration-permissions";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import bcrypt from "bcrypt";
|
|||||||
|
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { and, eq } from "@homarr/db";
|
import { and, eq } from "@homarr/db";
|
||||||
import { users } from "@homarr/db/schema/sqlite";
|
import { users } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import type { validation, z } from "@homarr/validation";
|
import type { validation, z } from "@homarr/validation";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { CredentialsSignin } from "@auth/core/errors";
|
|||||||
|
|
||||||
import type { Database, InferInsertModel } from "@homarr/db";
|
import type { Database, InferInsertModel } from "@homarr/db";
|
||||||
import { and, createId, eq } from "@homarr/db";
|
import { and, createId, eq } from "@homarr/db";
|
||||||
import { users } from "@homarr/db/schema/sqlite";
|
import { users } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import type { validation } from "@homarr/validation";
|
import type { validation } from "@homarr/validation";
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { describe, expect, test } from "vitest";
|
import { describe, expect, test } from "vitest";
|
||||||
|
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import { users } from "@homarr/db/schema/sqlite";
|
import { users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
|
|
||||||
import { createSaltAsync, hashPasswordAsync } from "../../security";
|
import { createSaltAsync, hashPasswordAsync } from "../../security";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
|
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { and, createId, eq } from "@homarr/db";
|
import { and, createId, eq } from "@homarr/db";
|
||||||
import { groups, users } from "@homarr/db/schema/sqlite";
|
import { groups, users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
|
|
||||||
import { authorizeWithLdapCredentialsAsync } from "../credentials/authorization/ldap-authorization";
|
import { authorizeWithLdapCredentialsAsync } from "../credentials/authorization/ldap-authorization";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { describe, expect, test } from "vitest";
|
import { describe, expect, test } from "vitest";
|
||||||
|
|
||||||
import { users } from "@homarr/db/schema/sqlite";
|
import { users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
|
|
||||||
import { createAdapter } from "../adapter";
|
import { createAdapter } from "../adapter";
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import type { AdapterUser } from "@auth/core/adapters";
|
|||||||
import type { JWT } from "next-auth/jwt";
|
import type { JWT } from "next-auth/jwt";
|
||||||
import { describe, expect, test, vi } from "vitest";
|
import { describe, expect, test, vi } from "vitest";
|
||||||
|
|
||||||
import { groupMembers, groupPermissions, groups, users } from "@homarr/db/schema/sqlite";
|
import { groupMembers, groupPermissions, groups, users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
import * as definitions from "@homarr/definitions";
|
import * as definitions from "@homarr/definitions";
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { describe, expect, test, vi } from "vitest";
|
|||||||
|
|
||||||
import { eq } from "@homarr/db";
|
import { eq } from "@homarr/db";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { groupMembers, groups, users } from "@homarr/db/schema/sqlite";
|
import { groupMembers, groups, users } from "@homarr/db/schema";
|
||||||
import { createDb } from "@homarr/db/test";
|
import { createDb } from "@homarr/db/test";
|
||||||
import { colorSchemeCookieKey, everyoneGroup } from "@homarr/definitions";
|
import { colorSchemeCookieKey, everyoneGroup } from "@homarr/definitions";
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { command, string } from "@drizzle-team/brocli";
|
|||||||
import { hashPasswordAsync } from "@homarr/auth";
|
import { hashPasswordAsync } from "@homarr/auth";
|
||||||
import { generateSecureRandomToken } from "@homarr/common/server";
|
import { generateSecureRandomToken } from "@homarr/common/server";
|
||||||
import { and, db, eq } from "@homarr/db";
|
import { and, db, eq } from "@homarr/db";
|
||||||
import { sessions, users } from "@homarr/db/schema/sqlite";
|
import { sessions, users } from "@homarr/db/schema";
|
||||||
|
|
||||||
export const resetPassword = command({
|
export const resetPassword = command({
|
||||||
name: "reset-password",
|
name: "reset-password",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { EVERY_WEEK } from "@homarr/cron-jobs-core/expressions";
|
|||||||
import type { InferInsertModel } from "@homarr/db";
|
import type { InferInsertModel } from "@homarr/db";
|
||||||
import { db, inArray } from "@homarr/db";
|
import { db, inArray } from "@homarr/db";
|
||||||
import { createId } from "@homarr/db/client";
|
import { createId } from "@homarr/db/client";
|
||||||
import { iconRepositories, icons } from "@homarr/db/schema/sqlite";
|
import { iconRepositories, icons } from "@homarr/db/schema";
|
||||||
import { fetchIconsAsync } from "@homarr/icons";
|
import { fetchIconsAsync } from "@homarr/icons";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import SuperJSON from "superjson";
|
|||||||
import type { Modify } from "@homarr/common/types";
|
import type { Modify } from "@homarr/common/types";
|
||||||
import { EVERY_5_MINUTES } from "@homarr/cron-jobs-core/expressions";
|
import { EVERY_5_MINUTES } from "@homarr/cron-jobs-core/expressions";
|
||||||
import { db, eq } from "@homarr/db";
|
import { db, eq } from "@homarr/db";
|
||||||
import { items } from "@homarr/db/schema/sqlite";
|
import { items } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import { createItemChannel } from "@homarr/redis";
|
import { createItemChannel } from "@homarr/redis";
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { env } from "@homarr/auth/env.mjs";
|
import { env } from "@homarr/auth/env.mjs";
|
||||||
import { NEVER } from "@homarr/cron-jobs-core/expressions";
|
import { NEVER } from "@homarr/cron-jobs-core/expressions";
|
||||||
import { db, eq, inArray } from "@homarr/db";
|
import { db, eq, inArray } from "@homarr/db";
|
||||||
import { sessions, users } from "@homarr/db/schema/sqlite";
|
import { sessions, users } from "@homarr/db/schema";
|
||||||
import { supportedAuthProviders } from "@homarr/definitions";
|
import { supportedAuthProviders } from "@homarr/definitions";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
import Database from "better-sqlite3";
|
import Database from "better-sqlite3";
|
||||||
|
|
||||||
import { database } from "./driver";
|
import { database } from "./driver";
|
||||||
import * as sqliteSchema from "./schema/sqlite";
|
|
||||||
|
|
||||||
// Export only the types from the sqlite schema as we're using that.
|
|
||||||
export const schema = sqliteSchema;
|
|
||||||
|
|
||||||
export * from "drizzle-orm";
|
export * from "drizzle-orm";
|
||||||
|
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import { defaultServerSettings, defaultServerSettingsKeys } from "@homarr/server
|
|||||||
|
|
||||||
import { createId, eq } from "..";
|
import { createId, eq } from "..";
|
||||||
import type { Database } from "..";
|
import type { Database } from "..";
|
||||||
|
import { onboarding, serverSettings } from "../schema";
|
||||||
import { groups } from "../schema/mysql";
|
import { groups } from "../schema/mysql";
|
||||||
import { onboarding, serverSettings } from "../schema/sqlite";
|
|
||||||
|
|
||||||
export const seedDataAsync = async (db: Database) => {
|
export const seedDataAsync = async (db: Database) => {
|
||||||
await seedEveryoneGroupAsync(db);
|
await seedEveryoneGroupAsync(db);
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import Database from "better-sqlite3";
|
|||||||
import { drizzle } from "drizzle-orm/better-sqlite3";
|
import { drizzle } from "drizzle-orm/better-sqlite3";
|
||||||
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
||||||
|
|
||||||
import { schema } from "../..";
|
import * as sqliteSchema from "../../schema/sqlite";
|
||||||
import { seedDataAsync } from "../seed";
|
import { seedDataAsync } from "../seed";
|
||||||
|
|
||||||
const migrationsFolder = process.argv[2] ?? ".";
|
const migrationsFolder = process.argv[2] ?? ".";
|
||||||
@@ -10,7 +10,7 @@ const migrationsFolder = process.argv[2] ?? ".";
|
|||||||
const migrateAsync = async () => {
|
const migrateAsync = async () => {
|
||||||
const sqlite = new Database(process.env.DB_URL?.replace("file:", ""));
|
const sqlite = new Database(process.env.DB_URL?.replace("file:", ""));
|
||||||
|
|
||||||
const db = drizzle(sqlite, { schema, casing: "snake_case" });
|
const db = drizzle(sqlite, { schema: sqliteSchema, casing: "snake_case" });
|
||||||
|
|
||||||
migrate(db, { migrationsFolder });
|
migrate(db, { migrationsFolder });
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
"exports": {
|
"exports": {
|
||||||
".": "./index.ts",
|
".": "./index.ts",
|
||||||
"./client": "./client.ts",
|
"./client": "./client.ts",
|
||||||
"./schema/sqlite": "./schema/sqlite.ts",
|
"./schema": "./schema/index.ts",
|
||||||
"./test": "./test/index.ts",
|
"./test": "./test/index.ts",
|
||||||
"./queries": "./queries/index.ts",
|
"./queries": "./queries/index.ts",
|
||||||
"./validationSchemas": "./validationSchemas.ts"
|
"./validationSchemas": "./validationSchemas.ts"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import type { WidgetKind } from "@homarr/definitions";
|
|||||||
import type { Database } from "..";
|
import type { Database } from "..";
|
||||||
import { inArray } from "..";
|
import { inArray } from "..";
|
||||||
import type { inferSupportedIntegrations } from "../../widgets/src";
|
import type { inferSupportedIntegrations } from "../../widgets/src";
|
||||||
import { items } from "../schema/sqlite";
|
import { items } from "../schema";
|
||||||
|
|
||||||
export const getItemsWithIntegrationsAsync = async <TKind extends WidgetKind>(
|
export const getItemsWithIntegrationsAsync = async <TKind extends WidgetKind>(
|
||||||
db: Database,
|
db: Database,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { defaultServerSettings, defaultServerSettingsKeys } from "@homarr/server
|
|||||||
|
|
||||||
import type { Database } from "..";
|
import type { Database } from "..";
|
||||||
import { eq } from "..";
|
import { eq } from "..";
|
||||||
import { serverSettings } from "../schema/sqlite";
|
import { serverSettings } from "../schema";
|
||||||
|
|
||||||
export const getServerSettingsAsync = async (db: Database) => {
|
export const getServerSettingsAsync = async (db: Database) => {
|
||||||
const settings = await db.query.serverSettings.findMany();
|
const settings = await db.query.serverSettings.findMany();
|
||||||
|
|||||||
45
packages/db/schema/index.ts
Normal file
45
packages/db/schema/index.ts
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import type { InferSelectModel } from "drizzle-orm";
|
||||||
|
|
||||||
|
import * as mysqlSchema from "./mysql";
|
||||||
|
import * as sqliteSchema from "./sqlite";
|
||||||
|
|
||||||
|
type Schema = typeof sqliteSchema;
|
||||||
|
|
||||||
|
const schema = process.env.DB_DRIVER === "mysql2" ? (mysqlSchema as unknown as Schema) : sqliteSchema;
|
||||||
|
|
||||||
|
// Sadly we can't use export * from here as we have multiple possible exports
|
||||||
|
export const {
|
||||||
|
accounts,
|
||||||
|
apiKeys,
|
||||||
|
apps,
|
||||||
|
boardGroupPermissions,
|
||||||
|
boardUserPermissions,
|
||||||
|
boards,
|
||||||
|
groupMembers,
|
||||||
|
groupPermissions,
|
||||||
|
groups,
|
||||||
|
iconRepositories,
|
||||||
|
icons,
|
||||||
|
integrationGroupPermissions,
|
||||||
|
integrationItems,
|
||||||
|
integrationSecrets,
|
||||||
|
integrationUserPermissions,
|
||||||
|
integrations,
|
||||||
|
invites,
|
||||||
|
items,
|
||||||
|
medias,
|
||||||
|
onboarding,
|
||||||
|
searchEngines,
|
||||||
|
sections,
|
||||||
|
serverSettings,
|
||||||
|
sessions,
|
||||||
|
users,
|
||||||
|
verificationTokens,
|
||||||
|
} = schema;
|
||||||
|
|
||||||
|
export type User = InferSelectModel<typeof schema.users>;
|
||||||
|
export type Account = InferSelectModel<typeof schema.accounts>;
|
||||||
|
export type Session = InferSelectModel<typeof schema.sessions>;
|
||||||
|
export type VerificationToken = InferSelectModel<typeof schema.verificationTokens>;
|
||||||
|
export type Integration = InferSelectModel<typeof schema.integrations>;
|
||||||
|
export type IntegrationSecret = InferSelectModel<typeof schema.integrationSecrets>;
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
import type { AdapterAccount } from "@auth/core/adapters";
|
import type { AdapterAccount } from "@auth/core/adapters";
|
||||||
import type { DayOfWeek } from "@mantine/dates";
|
import type { DayOfWeek } from "@mantine/dates";
|
||||||
import type { InferSelectModel } from "drizzle-orm";
|
|
||||||
import { relations, sql } from "drizzle-orm";
|
import { relations, sql } from "drizzle-orm";
|
||||||
import type { AnySQLiteColumn } from "drizzle-orm/sqlite-core";
|
import type { AnySQLiteColumn } from "drizzle-orm/sqlite-core";
|
||||||
import { blob, index, int, primaryKey, sqliteTable, text } from "drizzle-orm/sqlite-core";
|
import { blob, index, int, primaryKey, sqliteTable, text } from "drizzle-orm/sqlite-core";
|
||||||
@@ -567,10 +566,3 @@ export const searchEngineRelations = relations(searchEngines, ({ one }) => ({
|
|||||||
references: [integrations.id],
|
references: [integrations.id],
|
||||||
}),
|
}),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
export type User = InferSelectModel<typeof users>;
|
|
||||||
export type Account = InferSelectModel<typeof accounts>;
|
|
||||||
export type Session = InferSelectModel<typeof sessions>;
|
|
||||||
export type VerificationToken = InferSelectModel<typeof verificationTokens>;
|
|
||||||
export type Integration = InferSelectModel<typeof integrations>;
|
|
||||||
export type IntegrationSecret = InferSelectModel<typeof integrationSecrets>;
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ import Database from "better-sqlite3";
|
|||||||
import { drizzle } from "drizzle-orm/better-sqlite3";
|
import { drizzle } from "drizzle-orm/better-sqlite3";
|
||||||
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
import { migrate } from "drizzle-orm/better-sqlite3/migrator";
|
||||||
|
|
||||||
import { schema } from "..";
|
import * as sqliteSchema from "../schema/sqlite";
|
||||||
|
|
||||||
export const createDb = (debug?: boolean) => {
|
export const createDb = (debug?: boolean) => {
|
||||||
const sqlite = new Database(":memory:");
|
const sqlite = new Database(":memory:");
|
||||||
const db = drizzle(sqlite, { schema, logger: debug, casing: "snake_case" });
|
const db = drizzle(sqlite, { schema: sqliteSchema, logger: debug, casing: "snake_case" });
|
||||||
migrate(db, {
|
migrate(db, {
|
||||||
migrationsFolder: "./packages/db/migrations/sqlite",
|
migrationsFolder: "./packages/db/migrations/sqlite",
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { createSelectSchema } from "drizzle-zod";
|
import { createSelectSchema } from "drizzle-zod";
|
||||||
|
|
||||||
import { apps, boards, groups, invites, searchEngines, serverSettings, users } from "./schema/sqlite";
|
import { apps, boards, groups, invites, searchEngines, serverSettings, users } from "./schema";
|
||||||
|
|
||||||
export const selectAppSchema = createSelectSchema(apps);
|
export const selectAppSchema = createSelectSchema(apps);
|
||||||
export const selectBoardSchema = createSelectSchema(boards);
|
export const selectBoardSchema = createSelectSchema(boards);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { decryptSecret } from "@homarr/common/server";
|
import { decryptSecret } from "@homarr/common/server";
|
||||||
import type { Modify } from "@homarr/common/types";
|
import type { Modify } from "@homarr/common/types";
|
||||||
import type { Integration as DbIntegration } from "@homarr/db/schema/sqlite";
|
import type { Integration as DbIntegration } from "@homarr/db/schema";
|
||||||
import type { IntegrationKind, IntegrationSecretKind } from "@homarr/definitions";
|
import type { IntegrationKind, IntegrationSecretKind } from "@homarr/definitions";
|
||||||
|
|
||||||
import { AdGuardHomeIntegration } from "../adguard-home/adguard-home-integration";
|
import { AdGuardHomeIntegration } from "../adguard-home/adguard-home-integration";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { Integration } from "@homarr/db/schema/sqlite";
|
import type { Integration } from "@homarr/db/schema";
|
||||||
import { z } from "@homarr/validation";
|
import { z } from "@homarr/validation";
|
||||||
|
|
||||||
const usenetQueueState = ["downloading", "queued", "paused"] as const;
|
const usenetQueueState = ["downloading", "queued", "paused"] as const;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { Integration } from "@homarr/db/schema/sqlite";
|
import type { Integration } from "@homarr/db/schema";
|
||||||
|
|
||||||
export interface DownloadClientStatus {
|
export interface DownloadClientStatus {
|
||||||
/** If client is considered paused */
|
/** If client is considered paused */
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { createId, inArray } from "@homarr/db";
|
import { createId, inArray } from "@homarr/db";
|
||||||
import type { Database, InferInsertModel, InferSelectModel } from "@homarr/db";
|
import type { Database, InferInsertModel, InferSelectModel } from "@homarr/db";
|
||||||
import { apps as appsTable } from "@homarr/db/schema/sqlite";
|
import { apps as appsTable } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import type { OldmarrApp } from "@homarr/old-schema";
|
import type { OldmarrApp } from "@homarr/old-schema";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import { boards } from "@homarr/db/schema/sqlite";
|
import { boards } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import type { OldmarrConfig } from "@homarr/old-schema";
|
import type { OldmarrConfig } from "@homarr/old-schema";
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import SuperJSON from "superjson";
|
|||||||
|
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import { items } from "@homarr/db/schema/sqlite";
|
import { items } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import type { OldmarrApp, OldmarrWidget } from "@homarr/old-schema";
|
import type { OldmarrApp, OldmarrWidget } from "@homarr/old-schema";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { sections } from "@homarr/db/schema/sqlite";
|
import { sections } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import type { OldmarrConfig } from "@homarr/old-schema";
|
import type { OldmarrConfig } from "@homarr/old-schema";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { objectEntries } from "@homarr/common";
|
import { objectEntries } from "@homarr/common";
|
||||||
import type { Database, InferInsertModel } from "@homarr/db";
|
import type { Database, InferInsertModel } from "@homarr/db";
|
||||||
import { schema } from "@homarr/db";
|
import * as schema from "@homarr/db/schema";
|
||||||
|
|
||||||
type TableKey = {
|
type TableKey = {
|
||||||
[K in keyof typeof schema]: (typeof schema)[K] extends { _: { brand: "Table" } } ? K : never;
|
[K in keyof typeof schema]: (typeof schema)[K] extends { _: { brand: "Table" } } ? K : never;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { inArray } from "@homarr/db";
|
import { inArray } from "@homarr/db";
|
||||||
import type { Database } from "@homarr/db";
|
import type { Database } from "@homarr/db";
|
||||||
import { apps } from "@homarr/db/schema/sqlite";
|
import { apps } from "@homarr/db/schema";
|
||||||
import type { OldmarrConfig } from "@homarr/old-schema";
|
import type { OldmarrConfig } from "@homarr/old-schema";
|
||||||
|
|
||||||
import { doAppsMatch } from "../prepare/prepare-apps";
|
import { doAppsMatch } from "../prepare/prepare-apps";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { InferSelectModel } from "@homarr/db";
|
import type { InferSelectModel } from "@homarr/db";
|
||||||
import type { apps } from "@homarr/db/schema/sqlite";
|
import type { apps } from "@homarr/db/schema";
|
||||||
import type { OldmarrApp } from "@homarr/old-schema";
|
import type { OldmarrApp } from "@homarr/old-schema";
|
||||||
|
|
||||||
import type { OldmarrBookmarkDefinition } from "../widgets/definitions/bookmark";
|
import type { OldmarrBookmarkDefinition } from "../widgets/definitions/bookmark";
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { InferInsertModel } from "@homarr/db";
|
import type { InferInsertModel } from "@homarr/db";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import type { boards } from "@homarr/db/schema/sqlite";
|
import type { boards } from "@homarr/db/schema";
|
||||||
|
|
||||||
import type { prepareMultipleImports } from "../prepare/prepare-multiple";
|
import type { prepareMultipleImports } from "../prepare/prepare-multiple";
|
||||||
import { mapColor } from "./map-colors";
|
import { mapColor } from "./map-colors";
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import SuperJSON from "superjson";
|
|||||||
|
|
||||||
import type { InferInsertModel } from "@homarr/db";
|
import type { InferInsertModel } from "@homarr/db";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import type { items } from "@homarr/db/schema/sqlite";
|
import type { items } from "@homarr/db/schema";
|
||||||
import { logger } from "@homarr/log";
|
import { logger } from "@homarr/log";
|
||||||
import type { BoardSize, OldmarrApp, OldmarrWidget } from "@homarr/old-schema";
|
import type { BoardSize, OldmarrApp, OldmarrWidget } from "@homarr/old-schema";
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import type { InferInsertModel } from "@homarr/db";
|
import type { InferInsertModel } from "@homarr/db";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import type { sections } from "@homarr/db/schema/sqlite";
|
import type { sections } from "@homarr/db/schema";
|
||||||
import type { OldmarrCategorySection, OldmarrEmptySection } from "@homarr/old-schema";
|
import type { OldmarrCategorySection, OldmarrEmptySection } from "@homarr/old-schema";
|
||||||
|
|
||||||
export const mapCategorySection = (
|
export const mapCategorySection = (
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { decryptSecretWithKey } from "@homarr/common/server";
|
import { decryptSecretWithKey } from "@homarr/common/server";
|
||||||
import type { InferInsertModel } from "@homarr/db";
|
import type { InferInsertModel } from "@homarr/db";
|
||||||
import { createId } from "@homarr/db";
|
import { createId } from "@homarr/db";
|
||||||
import type { users } from "@homarr/db/schema/sqlite";
|
import type { users } from "@homarr/db/schema";
|
||||||
|
|
||||||
import type { OldmarrImportUser } from "../user-schema";
|
import type { OldmarrImportUser } from "../user-schema";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import type { InferSelectModel } from "@homarr/db";
|
import type { InferSelectModel } from "@homarr/db";
|
||||||
import type { apps } from "@homarr/db/schema/sqlite";
|
import type { apps } from "@homarr/db/schema";
|
||||||
import type { OldmarrConfig } from "@homarr/old-schema";
|
import type { OldmarrConfig } from "@homarr/old-schema";
|
||||||
|
|
||||||
import type { ValidAnalyseConfig } from "../analyse/types";
|
import type { ValidAnalyseConfig } from "../analyse/types";
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import type { Duration } from "dayjs/plugin/duration";
|
import type { Duration } from "dayjs/plugin/duration";
|
||||||
|
|
||||||
import type { Modify } from "@homarr/common/types";
|
import type { Modify } from "@homarr/common/types";
|
||||||
import type { Integration, IntegrationSecret } from "@homarr/db/schema/sqlite";
|
import type { Integration, IntegrationSecret } from "@homarr/db/schema";
|
||||||
import type { IntegrationKind } from "@homarr/definitions";
|
import type { IntegrationKind } from "@homarr/definitions";
|
||||||
import { createIntegrationOptionsChannel } from "@homarr/redis";
|
import { createIntegrationOptionsChannel } from "@homarr/redis";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user