diff --git a/apps/api/v1/lib/helpers/verifyApiKey.test.ts b/apps/api/v1/lib/helpers/verifyApiKey.test.ts index 8cb47d561f..8dbe3504bc 100644 --- a/apps/api/v1/lib/helpers/verifyApiKey.test.ts +++ b/apps/api/v1/lib/helpers/verifyApiKey.test.ts @@ -11,9 +11,9 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { ILicenseKeyService } from "@calcom/ee/common/server/LicenseKeyService"; import LicenseKeyService, { LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService"; -import { PrismaApiKeyRepository } from "@calcom/lib/server/repository/PrismaApiKeyRepository"; -import type { IDeploymentRepository } from "@calcom/lib/server/repository/deployment.interface"; -import { ApiKeyService } from "@calcom/lib/server/service/ApiKeyService"; +import { PrismaApiKeyRepository } from "@calcom/features/ee/api-keys/repositories/PrismaApiKeyRepository"; +import { ApiKeyService } from "@calcom/features/ee/api-keys/services/ApiKeyService"; +import type { IDeploymentRepository } from "@calcom/features/ee/deployment/repositories/IDeploymentRepository"; import { UserPermissionRole } from "@calcom/prisma/enums"; import { isAdminGuard } from "../utils/isAdmin"; @@ -21,11 +21,11 @@ import { isLockedOrBlocked } from "../utils/isLockedOrBlocked"; import { ScopeOfAdmin } from "../utils/scopeOfAdmin"; import { verifyApiKey } from "./verifyApiKey"; -vi.mock("@calcom/lib/server/service/ApiKeyService", () => ({ +vi.mock("@calcom/features/ee/api-keys/services/ApiKeyService", () => ({ ApiKeyService: vi.fn(), })); -vi.mock("@calcom/lib/server/repository/PrismaApiKeyRepository", () => ({ +vi.mock("@calcom/features/ee/api-keys/repositories/PrismaApiKeyRepository", () => ({ PrismaApiKeyRepository: vi.fn(), })); diff --git a/apps/api/v1/lib/helpers/verifyApiKey.ts b/apps/api/v1/lib/helpers/verifyApiKey.ts index e7b92d0ba2..804b21bce3 100644 --- a/apps/api/v1/lib/helpers/verifyApiKey.ts +++ b/apps/api/v1/lib/helpers/verifyApiKey.ts @@ -2,10 +2,10 @@ import type { NextMiddleware } from "next-api-middleware"; import { LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService"; import { hashAPIKey } from "@calcom/features/ee/api-keys/lib/apiKeys"; +import { PrismaApiKeyRepository } from "@calcom/features/ee/api-keys/repositories/PrismaApiKeyRepository"; +import { ApiKeyService } from "@calcom/features/ee/api-keys/services/ApiKeyService"; +import { DeploymentRepository } from "@calcom/features/ee/deployment/repositories/DeploymentRepository"; import { IS_PRODUCTION } from "@calcom/lib/constants"; -import { PrismaApiKeyRepository } from "@calcom/lib/server/repository/PrismaApiKeyRepository"; -import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; -import { ApiKeyService } from "@calcom/lib/server/service/ApiKeyService"; import { prisma } from "@calcom/prisma"; import { isAdminGuard } from "../utils/isAdmin"; diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/api-keys/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/api-keys/page.tsx index 7bd6cbfa2a..e1fbec694e 100644 --- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/api-keys/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/api-keys/page.tsx @@ -4,8 +4,8 @@ import { cookies, headers } from "next/headers"; import { redirect } from "next/navigation"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; +import { PrismaApiKeyRepository } from "@calcom/features/ee/api-keys/repositories/PrismaApiKeyRepository"; import { APP_NAME } from "@calcom/lib/constants"; -import { PrismaApiKeyRepository } from "@calcom/lib/server/repository/PrismaApiKeyRepository"; import { buildLegacyRequest } from "@lib/buildLegacyCtx"; diff --git a/apps/web/lib/daily-webhook/getBookingReference.ts b/apps/web/lib/daily-webhook/getBookingReference.ts index 9d34da167f..261e7cb8c7 100644 --- a/apps/web/lib/daily-webhook/getBookingReference.ts +++ b/apps/web/lib/daily-webhook/getBookingReference.ts @@ -1,7 +1,7 @@ +import { BookingReferenceRepository } from "@calcom/features/bookingReference/repositories/BookingReferenceRepository"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { BookingReferenceRepository } from "@calcom/lib/server/repository/bookingReference"; const log = logger.getSubLogger({ prefix: ["daily-video-webhook-handler"] }); diff --git a/apps/web/server/lib/setup/getServerSideProps.tsx b/apps/web/server/lib/setup/getServerSideProps.tsx index 1267359ab7..ea086d05e2 100644 --- a/apps/web/server/lib/setup/getServerSideProps.tsx +++ b/apps/web/server/lib/setup/getServerSideProps.tsx @@ -3,7 +3,7 @@ import type { GetServerSidePropsContext } from "next"; import { getServerSession } from "@calcom/features/auth/lib/getServerSession"; import { LicenseKeySingleton } from "@calcom/features/ee/common/server/LicenseKeyService"; import { getDeploymentKey } from "@calcom/features/ee/deployment/lib/getDeploymentKey"; -import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; +import { DeploymentRepository } from "@calcom/features/ee/deployment/repositories/DeploymentRepository"; import prisma from "@calcom/prisma"; import { UserPermissionRole } from "@calcom/prisma/enums"; diff --git a/packages/ee/prisma-extensions/usage-tracking.ts b/packages/ee/prisma-extensions/usage-tracking.ts index dad16cb1a2..5480331ded 100644 --- a/packages/ee/prisma-extensions/usage-tracking.ts +++ b/packages/ee/prisma-extensions/usage-tracking.ts @@ -1,7 +1,7 @@ import { waitUntil } from "@vercel/functions"; import { UsageEvent, LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService"; -import type { IDeploymentRepository } from "@calcom/lib/server/repository/deployment.interface"; +import type { IDeploymentRepository } from "@calcom/features/ee/deployment/repositories/IDeploymentRepository"; import { Prisma } from "@calcom/prisma/client"; import type { PrismaClient } from "@calcom/prisma/client"; diff --git a/packages/features/auth/lib/getServerSession.ts b/packages/features/auth/lib/getServerSession.ts index b865dc3e5b..5dc14368ea 100644 --- a/packages/features/auth/lib/getServerSession.ts +++ b/packages/features/auth/lib/getServerSession.ts @@ -4,11 +4,11 @@ import type { AuthOptions, Session } from "next-auth"; import { getToken } from "next-auth/jwt"; import { LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService"; +import { DeploymentRepository } from "@calcom/features/ee/deployment/repositories/DeploymentRepository"; import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; import prisma from "@calcom/prisma"; const log = logger.getSubLogger({ prefix: ["getServerSession"] }); diff --git a/packages/features/auth/lib/next-auth-options.ts b/packages/features/auth/lib/next-auth-options.ts index 4c28baebe0..ee195a4b49 100644 --- a/packages/features/auth/lib/next-auth-options.ts +++ b/packages/features/auth/lib/next-auth-options.ts @@ -13,6 +13,7 @@ import { updateProfilePhotoGoogle } from "@calcom/app-store/_utils/oauth/updateP import GoogleCalendarService from "@calcom/app-store/googlecalendar/lib/CalendarService"; import { LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService"; import { CredentialRepository } from "@calcom/features/credentials/repositories/CredentialRepository"; +import { DeploymentRepository } from "@calcom/features/ee/deployment/repositories/DeploymentRepository"; import createUsersAndConnectToOrg from "@calcom/features/ee/dsync/lib/users/createUsersAndConnectToOrg"; import ImpersonationProvider from "@calcom/features/ee/impersonation/lib/ImpersonationProvider"; import { getOrganizationRepository } from "@calcom/features/ee/organizations/di/OrganizationRepository.container"; @@ -36,7 +37,6 @@ import logger from "@calcom/lib/logger"; import { randomString } from "@calcom/lib/random"; import { safeStringify } from "@calcom/lib/safeStringify"; import { hashEmail } from "@calcom/lib/server/PiiHasher"; -import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; import slugify from "@calcom/lib/slugify"; import prisma from "@calcom/prisma"; import type { Membership, Team } from "@calcom/prisma/client"; diff --git a/packages/lib/server/repository/bookingReference.integration-test.ts b/packages/features/bookingReference/repositories/BookingReferenceRepository.integration-test.ts similarity index 99% rename from packages/lib/server/repository/bookingReference.integration-test.ts rename to packages/features/bookingReference/repositories/BookingReferenceRepository.integration-test.ts index b1e01a49bd..fd1144b433 100644 --- a/packages/lib/server/repository/bookingReference.integration-test.ts +++ b/packages/features/bookingReference/repositories/BookingReferenceRepository.integration-test.ts @@ -1,9 +1,10 @@ import { describe, it, expect, beforeAll, afterAll, afterEach } from "vitest"; -import { BookingReferenceRepository } from "@calcom/lib/server/repository/bookingReference"; import prisma from "@calcom/prisma"; import type { Booking, Credential, User } from "@calcom/prisma/client"; +import { BookingReferenceRepository } from "./BookingReferenceRepository"; + describe("BookingReferenceRepository Integration Tests", () => { let testUser: User; let testCredential: Credential; diff --git a/packages/lib/server/repository/bookingReference.ts b/packages/features/bookingReference/repositories/BookingReferenceRepository.ts similarity index 100% rename from packages/lib/server/repository/bookingReference.ts rename to packages/features/bookingReference/repositories/BookingReferenceRepository.ts diff --git a/packages/lib/server/repository/bookingReport.interface.ts b/packages/features/bookingReport/repositories/IBookingReportRepository.ts similarity index 100% rename from packages/lib/server/repository/bookingReport.interface.ts rename to packages/features/bookingReport/repositories/IBookingReportRepository.ts diff --git a/packages/lib/server/repository/bookingReport.test.ts b/packages/features/bookingReport/repositories/PrismaBookingReportRepository.test.ts similarity index 97% rename from packages/lib/server/repository/bookingReport.test.ts rename to packages/features/bookingReport/repositories/PrismaBookingReportRepository.test.ts index 50fdd9c217..5c99a9c3b9 100644 --- a/packages/lib/server/repository/bookingReport.test.ts +++ b/packages/features/bookingReport/repositories/PrismaBookingReportRepository.test.ts @@ -3,8 +3,8 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; import type { PrismaClient } from "@calcom/prisma"; import { BookingReportReason } from "@calcom/prisma/enums"; -import { PrismaBookingReportRepository } from "./bookingReport"; -import type { CreateBookingReportInput } from "./bookingReport.interface"; +import type { CreateBookingReportInput } from "./IBookingReportRepository"; +import { PrismaBookingReportRepository } from "./PrismaBookingReportRepository"; vi.mock("@sentry/nextjs", () => ({ captureException: vi.fn(), diff --git a/packages/lib/server/repository/bookingReport.ts b/packages/features/bookingReport/repositories/PrismaBookingReportRepository.ts similarity index 99% rename from packages/lib/server/repository/bookingReport.ts rename to packages/features/bookingReport/repositories/PrismaBookingReportRepository.ts index e42d375b8c..85430518f0 100644 --- a/packages/lib/server/repository/bookingReport.ts +++ b/packages/features/bookingReport/repositories/PrismaBookingReportRepository.ts @@ -7,7 +7,7 @@ import type { CreateBookingReportInput, BookingReportWithDetails, ListBookingReportsFilters, -} from "./bookingReport.interface"; +} from "./IBookingReportRepository"; export class PrismaBookingReportRepository implements IBookingReportRepository { constructor(private readonly prismaClient: PrismaClient) {} diff --git a/packages/features/calAIPhone/providers/retellAI/services/AgentService.ts b/packages/features/calAIPhone/providers/retellAI/services/AgentService.ts index f05e5af6b2..e4dbeb0354 100644 --- a/packages/features/calAIPhone/providers/retellAI/services/AgentService.ts +++ b/packages/features/calAIPhone/providers/retellAI/services/AgentService.ts @@ -1,13 +1,13 @@ import { isValidPhoneNumber } from "libphonenumber-js/max"; import { v4 as uuidv4 } from "uuid"; +import { PrismaApiKeyRepository } from "@calcom/features/ee/api-keys/repositories/PrismaApiKeyRepository"; import { replaceEventTypePlaceholders } from "@calcom/features/ee/workflows/components/agent-configuration/utils/promptUtils"; import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import { RETELL_AI_TEST_MODE, RETELL_AI_TEST_EVENT_TYPE_MAP } from "@calcom/lib/constants"; import { timeZoneSchema } from "@calcom/lib/dayjs/timeZone.schema"; import { HttpError } from "@calcom/lib/http-error"; import logger from "@calcom/lib/logger"; -import { PrismaApiKeyRepository } from "@calcom/lib/server/repository/PrismaApiKeyRepository"; import prisma from "@calcom/prisma"; import type { diff --git a/packages/lib/server/repository/deployment.ts b/packages/features/deployment/repositories/DeploymentRepository.ts similarity index 93% rename from packages/lib/server/repository/deployment.ts rename to packages/features/deployment/repositories/DeploymentRepository.ts index 752b89897d..4dcb9ed620 100644 --- a/packages/lib/server/repository/deployment.ts +++ b/packages/features/deployment/repositories/DeploymentRepository.ts @@ -1,7 +1,7 @@ import type { PrismaClient as PrismaClientWithExtensions } from "@calcom/prisma"; import type { PrismaClient as PrismaClientWithoutExtensions } from "@calcom/prisma/client"; -import type { IDeploymentRepository } from "./deployment.interface"; +import type { IDeploymentRepository } from "./IDeploymentRepository"; export class DeploymentRepository implements IDeploymentRepository { constructor(private prisma: PrismaClientWithoutExtensions | PrismaClientWithExtensions) {} diff --git a/packages/lib/server/repository/deployment.interface.ts b/packages/features/deployment/repositories/IDeploymentRepository.ts similarity index 100% rename from packages/lib/server/repository/deployment.interface.ts rename to packages/features/deployment/repositories/IDeploymentRepository.ts diff --git a/packages/features/di/modules/SelectedSlots.ts b/packages/features/di/modules/SelectedSlots.ts index c106559b48..94d3b870a2 100644 --- a/packages/features/di/modules/SelectedSlots.ts +++ b/packages/features/di/modules/SelectedSlots.ts @@ -1,5 +1,5 @@ import { DI_TOKENS } from "@calcom/features/di/tokens"; -import { PrismaSelectedSlotRepository } from "@calcom/lib/server/repository/PrismaSelectedSlotRepository"; +import { PrismaSelectedSlotRepository } from "@calcom/features/selectedSlots/repositories/PrismaSelectedSlotRepository"; import { createModule } from "../di"; diff --git a/packages/features/di/watchlist/containers/watchlist.ts b/packages/features/di/watchlist/containers/watchlist.ts index 69746e2283..86091db4b8 100644 --- a/packages/features/di/watchlist/containers/watchlist.ts +++ b/packages/features/di/watchlist/containers/watchlist.ts @@ -1,9 +1,11 @@ import { createContainer } from "@evyweb/ioctopus"; -import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; +import { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; +import { moduleLoader as prismaModuleLoader } from "@calcom/features/di/modules/Prisma"; import { moduleLoader as loggerModuleLoader } from "@calcom/features/di/shared/services/logger.service"; import { taskerServiceModule } from "@calcom/features/di/shared/services/tasker.service"; import { SHARED_TOKENS } from "@calcom/features/di/shared/shared.tokens"; +import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { createWatchlistFeature, @@ -11,6 +13,7 @@ import { } from "@calcom/features/watchlist/lib/facade/WatchlistFeature"; import type { IGlobalWatchlistRepository } from "@calcom/features/watchlist/lib/interface/IWatchlistRepositories"; import type { IOrganizationWatchlistRepository } from "@calcom/features/watchlist/lib/interface/IWatchlistRepositories"; +import { WatchlistRepository } from "@calcom/features/watchlist/lib/repository/WatchlistRepository"; import { AdminWatchlistOperationsService } from "@calcom/features/watchlist/lib/service/AdminWatchlistOperationsService"; import { AdminWatchlistQueryService } from "@calcom/features/watchlist/lib/service/AdminWatchlistQueryService"; import type { GlobalBlockingService } from "@calcom/features/watchlist/lib/service/GlobalBlockingService"; @@ -19,10 +22,7 @@ import { OrganizationWatchlistOperationsService } from "@calcom/features/watchli import { OrganizationWatchlistQueryService } from "@calcom/features/watchlist/lib/service/OrganizationWatchlistQueryService"; import type { WatchlistAuditService } from "@calcom/features/watchlist/lib/service/WatchlistAuditService"; import type { WatchlistService } from "@calcom/features/watchlist/lib/service/WatchlistService"; -import { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; -import { WatchlistRepository } from "@calcom/lib/server/repository/watchlist.repository"; import { prisma } from "@calcom/prisma"; -import { moduleLoader as prismaModuleLoader } from "@calcom/features/di/modules/Prisma"; import { WATCHLIST_DI_TOKENS } from "../Watchlist.tokens"; import { watchlistModule } from "../modules/Watchlist.module"; diff --git a/packages/lib/server/repository/PrismaApiKeyRepository.ts b/packages/features/ee/api-keys/repositories/PrismaApiKeyRepository.ts similarity index 94% rename from packages/lib/server/repository/PrismaApiKeyRepository.ts rename to packages/features/ee/api-keys/repositories/PrismaApiKeyRepository.ts index a5e1e48c67..9482ab59d3 100644 --- a/packages/lib/server/repository/PrismaApiKeyRepository.ts +++ b/packages/features/ee/api-keys/repositories/PrismaApiKeyRepository.ts @@ -1,8 +1,9 @@ import { v4 as uuidv4 } from "uuid"; -import { generateUniqueAPIKey as generateHashedApiKey } from "@calcom/ee/api-keys/lib/apiKeys"; import type { PrismaClient } from "@calcom/prisma"; +import { generateUniqueAPIKey as generateHashedApiKey } from "../lib/apiKeys"; + export class PrismaApiKeyRepository { constructor(private prismaClient: PrismaClient) {} diff --git a/packages/lib/server/service/ApiKeyService.ts b/packages/features/ee/api-keys/services/ApiKeyService.ts similarity index 92% rename from packages/lib/server/service/ApiKeyService.ts rename to packages/features/ee/api-keys/services/ApiKeyService.ts index 8585501bdb..c1d175443c 100644 --- a/packages/lib/server/service/ApiKeyService.ts +++ b/packages/features/ee/api-keys/services/ApiKeyService.ts @@ -1,4 +1,4 @@ -import type { PrismaApiKeyRepository } from "../repository/PrismaApiKeyRepository"; +import type { PrismaApiKeyRepository } from "../repositories/PrismaApiKeyRepository"; type Deps = { apiKeyRepo: PrismaApiKeyRepository; diff --git a/packages/features/ee/common/server/LicenseKeyService.ts b/packages/features/ee/common/server/LicenseKeyService.ts index 092d581087..0af08cc1cd 100644 --- a/packages/features/ee/common/server/LicenseKeyService.ts +++ b/packages/features/ee/common/server/LicenseKeyService.ts @@ -4,9 +4,9 @@ import { getDeploymentKey, getDeploymentSignatureToken, } from "@calcom/features/ee/deployment/lib/getDeploymentKey"; +import type { IDeploymentRepository } from "@calcom/features/ee/deployment/repositories/IDeploymentRepository"; import { CALCOM_PRIVATE_API_ROUTE } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; -import type { IDeploymentRepository } from "@calcom/lib/server/repository/deployment.interface"; import { generateNonce, createSignature } from "./private-api-utils"; diff --git a/packages/features/ee/deployment/lib/getDeploymentKey.ts b/packages/features/ee/deployment/lib/getDeploymentKey.ts index 1fdde9aedd..a1e7ac3575 100644 --- a/packages/features/ee/deployment/lib/getDeploymentKey.ts +++ b/packages/features/ee/deployment/lib/getDeploymentKey.ts @@ -1,6 +1,6 @@ +import type { IDeploymentRepository } from "@calcom/features/ee/deployment/repositories/IDeploymentRepository"; import { symmetricDecrypt } from "@calcom/lib/crypto"; import logger from "@calcom/lib/logger"; -import type { IDeploymentRepository } from "@calcom/lib/server/repository/deployment.interface"; const log = logger.getSubLogger({ prefix: ["getDeploymentKey"] }); diff --git a/packages/features/ee/deployment/repositories/DeploymentRepository.ts b/packages/features/ee/deployment/repositories/DeploymentRepository.ts new file mode 100644 index 0000000000..4dcb9ed620 --- /dev/null +++ b/packages/features/ee/deployment/repositories/DeploymentRepository.ts @@ -0,0 +1,25 @@ +import type { PrismaClient as PrismaClientWithExtensions } from "@calcom/prisma"; +import type { PrismaClient as PrismaClientWithoutExtensions } from "@calcom/prisma/client"; + +import type { IDeploymentRepository } from "./IDeploymentRepository"; + +export class DeploymentRepository implements IDeploymentRepository { + constructor(private prisma: PrismaClientWithoutExtensions | PrismaClientWithExtensions) {} + + async getLicenseKeyWithId(id: number): Promise { + // This repository is special as it is used within prisma extensions + const deployment = await (this.prisma as PrismaClientWithoutExtensions).deployment.findUnique({ + where: { id }, + select: { licenseKey: true }, + }); + return deployment?.licenseKey || null; + } + + async getSignatureToken(id: number): Promise { + const deployment = await (this.prisma as PrismaClientWithoutExtensions).deployment.findUnique({ + where: { id }, + select: { signatureTokenEncrypted: true }, + }); + return deployment?.signatureTokenEncrypted || null; + } +} diff --git a/packages/features/ee/deployment/repositories/IDeploymentRepository.ts b/packages/features/ee/deployment/repositories/IDeploymentRepository.ts new file mode 100644 index 0000000000..9370594c50 --- /dev/null +++ b/packages/features/ee/deployment/repositories/IDeploymentRepository.ts @@ -0,0 +1,4 @@ +export interface IDeploymentRepository { + getLicenseKeyWithId(id: number): Promise; + getSignatureToken(id: number): Promise; +} diff --git a/packages/features/ee/organizations/lib/service/onboarding/SelfHostedOnboardingService.ts b/packages/features/ee/organizations/lib/service/onboarding/SelfHostedOnboardingService.ts index 472d2cf4c7..ecfdbd0b93 100644 --- a/packages/features/ee/organizations/lib/service/onboarding/SelfHostedOnboardingService.ts +++ b/packages/features/ee/organizations/lib/service/onboarding/SelfHostedOnboardingService.ts @@ -1,4 +1,5 @@ import { LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService"; +import { DeploymentRepository } from "@calcom/features/ee/deployment/repositories/DeploymentRepository"; import { getOrganizationRepository } from "@calcom/features/ee/organizations/di/OrganizationRepository.container"; import { findUserToBeOrgOwner } from "@calcom/features/ee/organizations/lib/server/orgCreationUtils"; import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository"; @@ -6,7 +7,6 @@ import { IS_SELF_HOSTED } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; import { prisma } from "@calcom/prisma"; import type { Team, User } from "@calcom/prisma/client"; import { BillingPeriod } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/organizations/repositories/OrganizationRepository.test.ts b/packages/features/ee/organizations/repositories/OrganizationRepository.test.ts index 87ca79279f..1fbef952d5 100644 --- a/packages/features/ee/organizations/repositories/OrganizationRepository.test.ts +++ b/packages/features/ee/organizations/repositories/OrganizationRepository.test.ts @@ -5,7 +5,7 @@ import { describe, it, expect, beforeEach, vi } from "vitest"; import { OrganizationRepository } from "@calcom/features/ee/organizations/repositories/OrganizationRepository"; import type { Prisma } from "@calcom/prisma/client"; -vi.mock("@calcom/lib/server/repository/teamUtils", () => ({ +vi.mock("@calcom/features/ee/teams/lib/getParsedTeam", () => ({ getParsedTeam: (org: T) => org, })); diff --git a/packages/features/ee/organizations/repositories/OrganizationRepository.ts b/packages/features/ee/organizations/repositories/OrganizationRepository.ts index 4914b69486..a1715968d2 100644 --- a/packages/features/ee/organizations/repositories/OrganizationRepository.ts +++ b/packages/features/ee/organizations/repositories/OrganizationRepository.ts @@ -1,11 +1,11 @@ import type { z } from "zod"; import { getOrgUsernameFromEmail } from "@calcom/features/auth/signup/utils/getOrgUsernameFromEmail"; +import { getParsedTeam } from "@calcom/features/ee/teams/lib/getParsedTeam"; import { createAProfileForAnExistingUser } from "@calcom/features/profile/lib/createAProfileForAnExistingUser"; import { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; import type { PrismaClient } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { CreationSource } from "@calcom/prisma/enums"; diff --git a/packages/features/ee/round-robin/handleRescheduleEventManager.ts b/packages/features/ee/round-robin/handleRescheduleEventManager.ts index d8974cca14..eb9a6f71d0 100644 --- a/packages/features/ee/round-robin/handleRescheduleEventManager.ts +++ b/packages/features/ee/round-robin/handleRescheduleEventManager.ts @@ -1,19 +1,19 @@ import { metadata as GoogleMeetMetadata } from "@calcom/app-store/googlevideo/_metadata"; import { MeetLocationType } from "@calcom/app-store/locations"; +import getICalUID from "@calcom/emails/lib/getICalUID"; +import { BookingReferenceRepository } from "@calcom/features/bookingReference/repositories/BookingReferenceRepository"; +import EventManager from "@calcom/features/bookings/lib/EventManager"; +import type { EventManagerInitParams } from "@calcom/features/bookings/lib/EventManager"; import { getAllCredentialsIncludeServiceAccountKey } from "@calcom/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials"; import type { EventType } from "@calcom/features/bookings/lib/getAllCredentialsForUsersOnEvent/getAllCredentials"; import { getVideoCallDetails } from "@calcom/features/bookings/lib/handleNewBooking/getVideoCallDetails"; import { getVideoCallUrlFromCalEvent } from "@calcom/lib/CalEventParser"; -import EventManager from "@calcom/features/bookings/lib/EventManager"; -import type { EventManagerInitParams } from "@calcom/features/bookings/lib/EventManager"; import logger from "@calcom/lib/logger"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { BookingReferenceRepository } from "@calcom/lib/server/repository/bookingReference"; import { prisma } from "@calcom/prisma"; import type { DestinationCalendar } from "@calcom/prisma/client"; import type { Prisma } from "@calcom/prisma/client"; import type { CalendarEvent, AdditionalInformation } from "@calcom/types/Calendar"; -import getICalUID from "@calcom/emails/lib/getICalUID"; type InitParams = { user: { @@ -165,9 +165,9 @@ export const handleRescheduleEventManager = async ({ const calendarResult = results.find((result) => result.type.includes("_calendar")); if (changedOrganizer) { - const providerICalUID = evt.iCalUID = Array.isArray(calendarResult?.createdEvent) + const providerICalUID = (evt.iCalUID = Array.isArray(calendarResult?.createdEvent) ? calendarResult?.createdEvent[0]?.iCalUID - : calendarResult?.createdEvent?.iCalUID; + : calendarResult?.createdEvent?.iCalUID); evt.iCalUID = providerICalUID || getICalUID({}); } else { evt.iCalUID = Array.isArray(calendarResult?.updatedEvent) diff --git a/packages/lib/server/repository/teamUtils.ts b/packages/features/ee/teams/lib/getParsedTeam.ts similarity index 100% rename from packages/lib/server/repository/teamUtils.ts rename to packages/features/ee/teams/lib/getParsedTeam.ts diff --git a/packages/features/ee/teams/repositories/TeamRepository.ts b/packages/features/ee/teams/repositories/TeamRepository.ts index 3d9a320e04..5605ed2472 100644 --- a/packages/features/ee/teams/repositories/TeamRepository.ts +++ b/packages/features/ee/teams/repositories/TeamRepository.ts @@ -1,8 +1,8 @@ import type { z } from "zod"; import { whereClauseForOrgWithSlugOrRequestedSlug } from "@calcom/ee/organizations/lib/orgDomains"; +import { getParsedTeam } from "@calcom/features/ee/teams/lib/getParsedTeam"; import logger from "@calcom/lib/logger"; -import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; import type { PrismaClient } from "@calcom/prisma"; import { prisma } from "@calcom/prisma"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/lib/server/repository/workflowStep.ts b/packages/features/ee/workflows/repositories/WorkflowStepRepository.ts similarity index 100% rename from packages/lib/server/repository/workflowStep.ts rename to packages/features/ee/workflows/repositories/WorkflowStepRepository.ts diff --git a/packages/lib/server/repository/eventTypeTranslation.ts b/packages/features/eventTypeTranslation/repositories/EventTypeTranslationRepository.ts similarity index 100% rename from packages/lib/server/repository/eventTypeTranslation.ts rename to packages/features/eventTypeTranslation/repositories/EventTypeTranslationRepository.ts diff --git a/packages/features/pbac/services/__tests__/role-management.factory.test.ts b/packages/features/pbac/services/__tests__/role-management.factory.test.ts index 0cdf1109c4..f27d608173 100644 --- a/packages/features/pbac/services/__tests__/role-management.factory.test.ts +++ b/packages/features/pbac/services/__tests__/role-management.factory.test.ts @@ -1,7 +1,7 @@ import { vi, describe, it, expect, beforeEach } from "vitest"; import { FeaturesRepository } from "@calcom/features/flags/features.repository"; -import { isOrganisationAdmin, isOrganisationOwner } from "@calcom/lib/server/queries/organisations"; +import { isOrganisationAdmin, isOrganisationOwner } from "@calcom/features/pbac/utils/isOrganisationAdmin"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; @@ -24,7 +24,7 @@ vi.mock("@calcom/prisma", () => ({ }, }, })); -vi.mock("@calcom/lib/server/queries/organisations", () => ({ +vi.mock("@calcom/features/pbac/utils/isOrganisationAdmin", () => ({ isOrganisationAdmin: vi.fn(), isOrganisationOwner: vi.fn(), })); diff --git a/packages/features/pbac/services/legacy-role-manager.service.ts b/packages/features/pbac/services/legacy-role-manager.service.ts index c4c8e3ef30..a90b242558 100644 --- a/packages/features/pbac/services/legacy-role-manager.service.ts +++ b/packages/features/pbac/services/legacy-role-manager.service.ts @@ -1,5 +1,5 @@ import { isTeamOwner } from "@calcom/features/ee/teams/lib/queries"; -import { isOrganisationAdmin, isOrganisationOwner } from "@calcom/lib/server/queries/organisations"; +import { isOrganisationAdmin, isOrganisationOwner } from "@calcom/features/pbac/utils/isOrganisationAdmin"; import { prisma } from "@calcom/prisma"; import type { Membership } from "@calcom/prisma/client"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/lib/server/queries/organisations/index.ts b/packages/features/pbac/utils/isOrganisationAdmin.ts similarity index 95% rename from packages/lib/server/queries/organisations/index.ts rename to packages/features/pbac/utils/isOrganisationAdmin.ts index 4fab6453c9..f04e68a6cc 100644 --- a/packages/lib/server/queries/organisations/index.ts +++ b/packages/features/pbac/utils/isOrganisationAdmin.ts @@ -1,4 +1,4 @@ -import prisma from "@calcom/prisma"; +import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; // export type OrganisationWithMembers = Awaited>; diff --git a/packages/features/profile/repositories/ProfileRepository.test.ts b/packages/features/profile/repositories/ProfileRepository.test.ts index 34b74cb099..08417cdd43 100644 --- a/packages/features/profile/repositories/ProfileRepository.test.ts +++ b/packages/features/profile/repositories/ProfileRepository.test.ts @@ -2,11 +2,12 @@ import prismock from "../../../../tests/libs/__mocks__/prisma"; import { describe, it, expect, beforeEach, vi } from "vitest"; -import { ProfileRepository, LookupTarget } from "./ProfileRepository"; -import { MembershipRole } from "@calcom/prisma/enums"; import type { Prisma } from "@calcom/prisma/client"; +import { MembershipRole } from "@calcom/prisma/enums"; -vi.mock("@calcom/lib/server/repository/teamUtils", () => ({ +import { ProfileRepository, LookupTarget } from "./ProfileRepository"; + +vi.mock("@calcom/features/ee/teams/lib/getParsedTeam", () => ({ getParsedTeam: (org: T) => org, })); @@ -478,4 +479,3 @@ describe("ProfileRepository.findByUpIdWithAuth - IDOR Security Fix", () => { }); }); }); - diff --git a/packages/features/profile/repositories/ProfileRepository.ts b/packages/features/profile/repositories/ProfileRepository.ts index 59406fd798..43c7bc0470 100644 --- a/packages/features/profile/repositories/ProfileRepository.ts +++ b/packages/features/profile/repositories/ProfileRepository.ts @@ -2,10 +2,10 @@ import { v4 as uuidv4 } from "uuid"; import { whereClauseForOrgWithSlugOrRequestedSlug } from "@calcom/ee/organizations/lib/orgDomains"; import { getOrgUsernameFromEmail } from "@calcom/features/auth/signup/utils/getOrgUsernameFromEmail"; +import { getParsedTeam } from "@calcom/features/ee/teams/lib/getParsedTeam"; import { DATABASE_CHUNK_SIZE } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; import prisma from "@calcom/prisma"; import type { User as PrismaUser } from "@calcom/prisma/client"; import type { Prisma } from "@calcom/prisma/client"; diff --git a/packages/lib/server/repository/ISelectedSlotRepository.ts b/packages/features/selectedSlots/repositories/ISelectedSlotRepository.ts similarity index 100% rename from packages/lib/server/repository/ISelectedSlotRepository.ts rename to packages/features/selectedSlots/repositories/ISelectedSlotRepository.ts diff --git a/packages/lib/server/repository/PrismaSelectedSlotRepository.ts b/packages/features/selectedSlots/repositories/PrismaSelectedSlotRepository.ts similarity index 100% rename from packages/lib/server/repository/PrismaSelectedSlotRepository.ts rename to packages/features/selectedSlots/repositories/PrismaSelectedSlotRepository.ts diff --git a/packages/lib/server/repository/dto/SelectedSlot.ts b/packages/features/selectedSlots/repositories/dto/SelectedSlot.ts similarity index 100% rename from packages/lib/server/repository/dto/SelectedSlot.ts rename to packages/features/selectedSlots/repositories/dto/SelectedSlot.ts diff --git a/packages/features/tasker/tasks/translateEventTypeData.ts b/packages/features/tasker/tasks/translateEventTypeData.ts index ae6479ecc0..20f131537b 100644 --- a/packages/features/tasker/tasks/translateEventTypeData.ts +++ b/packages/features/tasker/tasks/translateEventTypeData.ts @@ -1,8 +1,8 @@ import { z } from "zod"; +import { EventTypeTranslationRepository } from "@calcom/features/eventTypeTranslation/repositories/EventTypeTranslationRepository"; import { locales as i18nLocales } from "@calcom/lib/i18n"; import logger from "@calcom/lib/logger"; -import { EventTypeTranslationRepository } from "@calcom/lib/server/repository/eventTypeTranslation"; import { EventTypeAutoTranslatedField } from "@calcom/prisma/enums"; export const ZTranslateEventDataPayloadSchema = z.object({ diff --git a/packages/features/users/repositories/UserRepository.ts b/packages/features/users/repositories/UserRepository.ts index 3e23c7862d..073b85b53d 100644 --- a/packages/features/users/repositories/UserRepository.ts +++ b/packages/features/users/repositories/UserRepository.ts @@ -1,13 +1,13 @@ import type { z } from "zod"; import { whereClauseForOrgWithSlugOrRequestedSlug } from "@calcom/ee/organizations/lib/orgDomains"; +import { getParsedTeam } from "@calcom/features/ee/teams/lib/getParsedTeam"; import { ProfileRepository } from "@calcom/features/profile/repositories/ProfileRepository"; import { DEFAULT_SCHEDULE, getAvailabilityFromSchedule } from "@calcom/lib/availability"; import { buildNonDelegationCredentials } from "@calcom/lib/delegationCredential"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; import { withSelectedCalendars } from "@calcom/lib/server/withSelectedCalendars"; import type { PrismaClient } from "@calcom/prisma"; import { availabilityUserSelect } from "@calcom/prisma"; @@ -123,7 +123,7 @@ const userSelect = { } satisfies Prisma.UserSelect; export class UserRepository { - constructor(private prismaClient: PrismaClient) { } + constructor(private prismaClient: PrismaClient) {} async findTeamsByUserId({ userId }: { userId: UserType["id"] }) { const teamMemberships = await this.prismaClient.membership.findMany({ @@ -236,35 +236,35 @@ export class UserRepository { // Lookup in profiles because that's where the organization usernames exist const profiles = orgSlug ? ( - await ProfileRepository.findManyByOrgSlugOrRequestedSlug({ - orgSlug: orgSlug, - usernames: usernameList, - }) - ).map((profile) => ({ - ...profile, - organization: getParsedTeam(profile.organization), - })) + await ProfileRepository.findManyByOrgSlugOrRequestedSlug({ + orgSlug: orgSlug, + usernames: usernameList, + }) + ).map((profile) => ({ + ...profile, + organization: getParsedTeam(profile.organization), + })) : null; const where = profiles && profiles.length > 0 ? { - // Get UserIds from profiles - id: { - in: profiles.map((profile) => profile.user.id), - }, - } + // Get UserIds from profiles + id: { + in: profiles.map((profile) => profile.user.id), + }, + } : { - username: { - in: usernameList, - }, - ...(orgSlug - ? { - organization: whereClauseForOrgWithSlugOrRequestedSlug(orgSlug), - } - : { - organization: null, - }), - }; + username: { + in: usernameList, + }, + ...(orgSlug + ? { + organization: whereClauseForOrgWithSlugOrRequestedSlug(orgSlug), + } + : { + organization: null, + }), + }; return { where, profiles }; } @@ -681,27 +681,27 @@ export class UserRepository { async enrichEntityWithProfile< T extends - | { - profile: { - id: number; - username: string | null; - organizationId: number | null; - organization?: { - id: number; - name: string; - calVideoLogo?: string | null; - bannerUrl: string | null; - slug: string | null; - metadata: Prisma.JsonValue; - }; - }; - } - | { - user: { - username: string | null; - id: number; - }; - } + | { + profile: { + id: number; + username: string | null; + organizationId: number | null; + organization?: { + id: number; + name: string; + calVideoLogo?: string | null; + bannerUrl: string | null; + slug: string | null; + metadata: Prisma.JsonValue; + }; + }; + } + | { + user: { + username: string | null; + id: number; + }; + } >(entity: T) { if ("profile" in entity) { const { profile, ...entityWithoutProfile } = entity; @@ -714,11 +714,11 @@ export class UserRepository { ...profileWithoutOrganization, ...(parsedOrg ? { - organization: parsedOrg, - } + organization: parsedOrg, + } : { - organization: null, - }), + organization: null, + }), }, }; return ret; @@ -754,10 +754,10 @@ export class UserRepository { data: { movedToProfile: data.movedToProfileId ? { - connect: { - id: data.movedToProfileId, - }, - } + connect: { + id: data.movedToProfileId, + }, + } : undefined, }, }); @@ -803,15 +803,15 @@ export class UserRepository { locked, ...(organizationIdValue ? { - organizationId: organizationIdValue, - profiles: { - create: { - username, - organizationId: organizationIdValue, - uid: ProfileRepository.generateProfileUid(), + organizationId: organizationIdValue, + profiles: { + create: { + username, + organizationId: organizationIdValue, + uid: ProfileRepository.generateProfileUid(), + }, }, - }, - } + } : {}), ...rest, }, @@ -1014,19 +1014,19 @@ export class UserRepository { }; } - async findUnlockedUserForSession({ userId }: { userId: number }) { - const user = await this.prismaClient.user.findUnique({ - where: { - id: userId, - // Locked users can't login - locked: false, - }, - select: { - id: true, - uuid: true, - username: true, - name: true, - email: true, + async findUnlockedUserForSession({ userId }: { userId: number }) { + const user = await this.prismaClient.user.findUnique({ + where: { + id: userId, + // Locked users can't login + locked: false, + }, + select: { + id: true, + uuid: true, + username: true, + name: true, + email: true, emailVerified: true, bio: true, avatarUrl: true, diff --git a/packages/lib/server/repository/watchlist.interface.ts b/packages/features/watchlist/lib/repository/IWatchlistRepository.ts similarity index 100% rename from packages/lib/server/repository/watchlist.interface.ts rename to packages/features/watchlist/lib/repository/IWatchlistRepository.ts diff --git a/packages/lib/server/repository/watchlist.repository.ts b/packages/features/watchlist/lib/repository/WatchlistRepository.ts similarity index 99% rename from packages/lib/server/repository/watchlist.repository.ts rename to packages/features/watchlist/lib/repository/WatchlistRepository.ts index 145aa901ef..2010060c60 100644 --- a/packages/lib/server/repository/watchlist.repository.ts +++ b/packages/features/watchlist/lib/repository/WatchlistRepository.ts @@ -8,7 +8,7 @@ import type { WatchlistEntry, FindAllEntriesInput, WatchlistAuditEntry, -} from "./watchlist.interface"; +} from "./IWatchlistRepository"; export class WatchlistRepository implements IWatchlistRepository { constructor(private readonly prismaClient: PrismaClient) {} diff --git a/packages/features/watchlist/lib/service/AdminWatchlistOperationsService.ts b/packages/features/watchlist/lib/service/AdminWatchlistOperationsService.ts index 4182ac2395..7351dc76fe 100644 --- a/packages/features/watchlist/lib/service/AdminWatchlistOperationsService.ts +++ b/packages/features/watchlist/lib/service/AdminWatchlistOperationsService.ts @@ -1,6 +1,6 @@ +import type { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; +import type { WatchlistRepository } from "@calcom/features/watchlist/lib/repository/WatchlistRepository"; import logger from "@calcom/lib/logger"; -import type { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; -import type { WatchlistRepository } from "@calcom/lib/server/repository/watchlist.repository"; import { BookingReportStatus } from "@calcom/prisma/enums"; import { WatchlistErrors } from "../errors/WatchlistErrors"; diff --git a/packages/features/watchlist/lib/service/AdminWatchlistQueryService.ts b/packages/features/watchlist/lib/service/AdminWatchlistQueryService.ts index d99eecbe0e..71ca610060 100644 --- a/packages/features/watchlist/lib/service/AdminWatchlistQueryService.ts +++ b/packages/features/watchlist/lib/service/AdminWatchlistQueryService.ts @@ -1,7 +1,7 @@ +import type { ListBookingReportsFilters } from "@calcom/features/bookingReport/repositories/IBookingReportRepository"; +import type { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import type { UserRepository } from "@calcom/features/users/repositories/UserRepository"; -import type { ListBookingReportsFilters } from "@calcom/lib/server/repository/bookingReport.interface"; -import type { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; -import type { WatchlistRepository } from "@calcom/lib/server/repository/watchlist.repository"; +import type { WatchlistRepository } from "@calcom/features/watchlist/lib/repository/WatchlistRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { WatchlistType, WatchlistSource } from "@calcom/prisma/enums"; diff --git a/packages/features/watchlist/lib/service/OrganizationWatchlistOperationsService.ts b/packages/features/watchlist/lib/service/OrganizationWatchlistOperationsService.ts index f70adb8e90..62e824aeee 100644 --- a/packages/features/watchlist/lib/service/OrganizationWatchlistOperationsService.ts +++ b/packages/features/watchlist/lib/service/OrganizationWatchlistOperationsService.ts @@ -1,7 +1,7 @@ +import type { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import type { PermissionString } from "@calcom/features/pbac/domain/types/permission-registry"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import type { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; -import type { WatchlistRepository } from "@calcom/lib/server/repository/watchlist.repository"; +import type { WatchlistRepository } from "@calcom/features/watchlist/lib/repository/WatchlistRepository"; import { MembershipRole } from "@calcom/prisma/enums"; import { WatchlistErrors } from "../errors/WatchlistErrors"; @@ -60,7 +60,9 @@ export class OrganizationWatchlistOperationsService extends WatchlistOperationsS }); if (!hasPermission) { - throw WatchlistErrors.permissionDenied(`You are not authorized to ${permission.split(".")[1]} watchlist entries`); + throw WatchlistErrors.permissionDenied( + `You are not authorized to ${permission.split(".")[1]} watchlist entries` + ); } } diff --git a/packages/features/watchlist/lib/service/OrganizationWatchlistQueryService.ts b/packages/features/watchlist/lib/service/OrganizationWatchlistQueryService.ts index f64a7c5ee7..ea3976341e 100644 --- a/packages/features/watchlist/lib/service/OrganizationWatchlistQueryService.ts +++ b/packages/features/watchlist/lib/service/OrganizationWatchlistQueryService.ts @@ -1,6 +1,6 @@ import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; import type { UserRepository } from "@calcom/features/users/repositories/UserRepository"; -import type { WatchlistRepository } from "@calcom/lib/server/repository/watchlist.repository"; +import type { WatchlistRepository } from "@calcom/features/watchlist/lib/repository/WatchlistRepository"; import { MembershipRole, WatchlistType, WatchlistSource } from "@calcom/prisma/enums"; import { WatchlistErrors } from "../errors/WatchlistErrors"; diff --git a/packages/features/watchlist/lib/service/WatchlistOperationsService.ts b/packages/features/watchlist/lib/service/WatchlistOperationsService.ts index 7fbb047667..6261e47287 100644 --- a/packages/features/watchlist/lib/service/WatchlistOperationsService.ts +++ b/packages/features/watchlist/lib/service/WatchlistOperationsService.ts @@ -1,8 +1,8 @@ +import type { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; +import type { WatchlistEntry } from "@calcom/features/watchlist/lib/repository/IWatchlistRepository"; +import type { WatchlistRepository } from "@calcom/features/watchlist/lib/repository/WatchlistRepository"; import { domainRegex, emailRegex } from "@calcom/lib/emailSchema"; import logger from "@calcom/lib/logger"; -import type { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; -import type { WatchlistEntry } from "@calcom/lib/server/repository/watchlist.interface"; -import type { WatchlistRepository } from "@calcom/lib/server/repository/watchlist.repository"; import { WatchlistAction, WatchlistType } from "@calcom/prisma/enums"; import { WatchlistErrors } from "../errors/WatchlistErrors"; diff --git a/packages/platform/libraries/repositories.ts b/packages/platform/libraries/repositories.ts index 8da6dcf9db..008760896d 100644 --- a/packages/platform/libraries/repositories.ts +++ b/packages/platform/libraries/repositories.ts @@ -5,7 +5,7 @@ export { ScheduleRepository as PrismaScheduleRepository } from "@calcom/features export { BookingRepository as PrismaBookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; export { EventTypeRepository as PrismaEventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; export { RoutingFormResponseRepository as PrismaRoutingFormResponseRepository } from "@calcom/lib/server/repository/formResponse"; -export { PrismaSelectedSlotRepository } from "@calcom/lib/server/repository/PrismaSelectedSlotRepository"; +export { PrismaSelectedSlotRepository } from "@calcom/features/selectedSlots/repositories/PrismaSelectedSlotRepository"; export { TeamRepository as PrismaTeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository"; export { UserRepository as PrismaUserRepository } from "@calcom/features/users/repositories/UserRepository"; export { FeaturesRepository as PrismaFeaturesRepository } from "@calcom/features/flags/features.repository"; diff --git a/packages/trpc/server/routers/viewer/apiKeys/list.handler.ts b/packages/trpc/server/routers/viewer/apiKeys/list.handler.ts index d567319617..93f0795786 100644 --- a/packages/trpc/server/routers/viewer/apiKeys/list.handler.ts +++ b/packages/trpc/server/routers/viewer/apiKeys/list.handler.ts @@ -1,4 +1,4 @@ -import { PrismaApiKeyRepository } from "@calcom/lib/server/repository/PrismaApiKeyRepository"; +import { PrismaApiKeyRepository } from "@calcom/features/ee/api-keys/repositories/PrismaApiKeyRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { TrpcSessionUser } from "../../../types"; diff --git a/packages/trpc/server/routers/viewer/bookings/reportBooking.handler.test.ts b/packages/trpc/server/routers/viewer/bookings/reportBooking.handler.test.ts index 3a6f39b304..ceb12d6914 100644 --- a/packages/trpc/server/routers/viewer/bookings/reportBooking.handler.test.ts +++ b/packages/trpc/server/routers/viewer/bookings/reportBooking.handler.test.ts @@ -1,16 +1,16 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; +import { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import handleCancelBooking from "@calcom/features/bookings/lib/handleCancelBooking"; import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { BookingAccessService } from "@calcom/features/bookings/services/BookingAccessService"; -import { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; import { BookingStatus, BookingReportReason } from "@calcom/prisma/enums"; import { TRPCError } from "@trpc/server"; import { reportBookingHandler } from "./reportBooking.handler"; -vi.mock("@calcom/lib/server/repository/bookingReport"); +vi.mock("@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"); vi.mock("@calcom/features/bookings/lib/handleCancelBooking"); vi.mock("@calcom/features/bookings/repositories/BookingRepository"); vi.mock("@calcom/features/bookings/services/BookingAccessService"); diff --git a/packages/trpc/server/routers/viewer/bookings/reportBooking.handler.ts b/packages/trpc/server/routers/viewer/bookings/reportBooking.handler.ts index 99ef5101e3..9d856c6db4 100644 --- a/packages/trpc/server/routers/viewer/bookings/reportBooking.handler.ts +++ b/packages/trpc/server/routers/viewer/bookings/reportBooking.handler.ts @@ -1,8 +1,8 @@ +import { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import handleCancelBooking from "@calcom/features/bookings/lib/handleCancelBooking"; import { BookingRepository } from "@calcom/features/bookings/repositories/BookingRepository"; import { BookingAccessService } from "@calcom/features/bookings/services/BookingAccessService"; import logger from "@calcom/lib/logger"; -import { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; import prisma from "@calcom/prisma"; import { BookingStatus } from "@calcom/prisma/enums"; import type { TrpcSessionUser } from "@calcom/trpc/server/types"; diff --git a/packages/trpc/server/routers/viewer/organizations/deleteWatchlistEntry.handler.test.ts b/packages/trpc/server/routers/viewer/organizations/deleteWatchlistEntry.handler.test.ts index 776e62badf..755faad442 100644 --- a/packages/trpc/server/routers/viewer/organizations/deleteWatchlistEntry.handler.test.ts +++ b/packages/trpc/server/routers/viewer/organizations/deleteWatchlistEntry.handler.test.ts @@ -6,7 +6,7 @@ import { WatchlistType, WatchlistAction } from "@calcom/prisma/enums"; import { deleteWatchlistEntryHandler } from "./deleteWatchlistEntry.handler"; vi.mock("@calcom/features/di/watchlist/containers/watchlist"); -vi.mock("@calcom/lib/server/repository/watchlist.repository"); +vi.mock("@calcom/features/watchlist/lib/repository/WatchlistRepository"); describe("deleteWatchlistEntryHandler", () => { const mockUser = { @@ -40,7 +40,9 @@ describe("deleteWatchlistEntryHandler", () => { const { getOrganizationWatchlistOperationsService } = await import( "@calcom/features/di/watchlist/containers/watchlist" ); - const { WatchlistRepository } = await import("@calcom/lib/server/repository/watchlist.repository"); + const { WatchlistRepository } = await import( + "@calcom/features/watchlist/lib/repository/WatchlistRepository" + ); vi.mocked(getOrganizationWatchlistOperationsService).mockReturnValue(mockService as never); vi.mocked(WatchlistRepository).mockImplementation(() => mockWatchlistRepo as never); diff --git a/packages/trpc/server/routers/viewer/organizations/deleteWatchlistEntry.handler.ts b/packages/trpc/server/routers/viewer/organizations/deleteWatchlistEntry.handler.ts index e6f24f3035..46ad1cb58c 100644 --- a/packages/trpc/server/routers/viewer/organizations/deleteWatchlistEntry.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/deleteWatchlistEntry.handler.ts @@ -1,6 +1,6 @@ import { getOrganizationWatchlistOperationsService } from "@calcom/features/di/watchlist/containers/watchlist"; import { WatchlistError, WatchlistErrorCode } from "@calcom/features/watchlist/lib/errors/WatchlistErrors"; -import { WatchlistRepository } from "@calcom/lib/server/repository/watchlist.repository"; +import { WatchlistRepository } from "@calcom/features/watchlist/lib/repository/WatchlistRepository"; import { prisma } from "@calcom/prisma"; import { TRPCError } from "@trpc/server"; diff --git a/packages/trpc/server/routers/viewer/organizations/dismissBookingReport.handler.test.ts b/packages/trpc/server/routers/viewer/organizations/dismissBookingReport.handler.test.ts index 1827fd74de..04821ad7b2 100644 --- a/packages/trpc/server/routers/viewer/organizations/dismissBookingReport.handler.test.ts +++ b/packages/trpc/server/routers/viewer/organizations/dismissBookingReport.handler.test.ts @@ -1,13 +1,13 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; +import { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; import { MembershipRole, BookingReportReason } from "@calcom/prisma/enums"; import { dismissBookingReportHandler } from "./dismissBookingReport.handler"; vi.mock("@calcom/features/pbac/services/permission-check.service"); -vi.mock("@calcom/lib/server/repository/bookingReport"); +vi.mock("@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"); describe("dismissBookingReportHandler", () => { const mockUser = { diff --git a/packages/trpc/server/routers/viewer/organizations/dismissBookingReport.handler.ts b/packages/trpc/server/routers/viewer/organizations/dismissBookingReport.handler.ts index 1d4408df90..fcdd89de5d 100644 --- a/packages/trpc/server/routers/viewer/organizations/dismissBookingReport.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/dismissBookingReport.handler.ts @@ -1,5 +1,5 @@ +import { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/organizations/intentToCreateOrg.handler.ts b/packages/trpc/server/routers/viewer/organizations/intentToCreateOrg.handler.ts index 1d22e695d2..73a502ce79 100644 --- a/packages/trpc/server/routers/viewer/organizations/intentToCreateOrg.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/intentToCreateOrg.handler.ts @@ -1,5 +1,6 @@ import { LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService"; import { OrganizationOnboardingFactory } from "@calcom/ee/organizations/lib/service/onboarding/OrganizationOnboardingFactory"; +import { DeploymentRepository } from "@calcom/features/ee/deployment/repositories/DeploymentRepository"; import { assertCanCreateOrg, findUserToBeOrgOwner, @@ -8,7 +9,6 @@ import { OrganizationOnboardingRepository } from "@calcom/features/organizations import { IS_SELF_HOSTED } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; -import { DeploymentRepository } from "@calcom/lib/server/repository/deployment"; import { prisma } from "@calcom/prisma"; import { UserPermissionRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/organizations/listBookingReports.handler.test.ts b/packages/trpc/server/routers/viewer/organizations/listBookingReports.handler.test.ts index a6eb95702b..c28ebae14b 100644 --- a/packages/trpc/server/routers/viewer/organizations/listBookingReports.handler.test.ts +++ b/packages/trpc/server/routers/viewer/organizations/listBookingReports.handler.test.ts @@ -1,13 +1,13 @@ import { describe, it, expect, vi, beforeEach } from "vitest"; +import { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; import { MembershipRole, BookingReportReason, BookingReportStatus } from "@calcom/prisma/enums"; import { listBookingReportsHandler } from "./listBookingReports.handler"; vi.mock("@calcom/features/pbac/services/permission-check.service"); -vi.mock("@calcom/lib/server/repository/bookingReport"); +vi.mock("@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"); describe("listBookingReportsHandler (Organization)", () => { const mockUser = { diff --git a/packages/trpc/server/routers/viewer/organizations/listBookingReports.handler.ts b/packages/trpc/server/routers/viewer/organizations/listBookingReports.handler.ts index 42fe29a34e..b2086a8427 100644 --- a/packages/trpc/server/routers/viewer/organizations/listBookingReports.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/listBookingReports.handler.ts @@ -1,5 +1,5 @@ +import { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/organizations/pendingReportsCount.handler.ts b/packages/trpc/server/routers/viewer/organizations/pendingReportsCount.handler.ts index a09542fc2f..c6e3792a20 100644 --- a/packages/trpc/server/routers/viewer/organizations/pendingReportsCount.handler.ts +++ b/packages/trpc/server/routers/viewer/organizations/pendingReportsCount.handler.ts @@ -1,5 +1,5 @@ +import { PrismaBookingReportRepository } from "@calcom/features/bookingReport/repositories/PrismaBookingReportRepository"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; -import { PrismaBookingReportRepository } from "@calcom/lib/server/repository/bookingReport"; import { prisma } from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/slots/isAvailable.handler.ts b/packages/trpc/server/routers/viewer/slots/isAvailable.handler.ts index 0727af5498..bf2ce030c3 100644 --- a/packages/trpc/server/routers/viewer/slots/isAvailable.handler.ts +++ b/packages/trpc/server/routers/viewer/slots/isAvailable.handler.ts @@ -1,9 +1,9 @@ import type { NextApiRequest } from "next"; import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; +import { PrismaSelectedSlotRepository } from "@calcom/features/selectedSlots/repositories/PrismaSelectedSlotRepository"; import { HttpError } from "@calcom/lib/http-error"; import { getPastTimeAndMinimumBookingNoticeBoundsStatus } from "@calcom/lib/isOutOfBounds"; -import { PrismaSelectedSlotRepository } from "@calcom/lib/server/repository/PrismaSelectedSlotRepository"; import type { PrismaClient } from "@calcom/prisma"; import type { TIsAvailableInputSchema, TIsAvailableOutputSchema } from "./isAvailable.schema"; diff --git a/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.test.ts b/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.test.ts index 7972d90a2a..331d0db3f2 100644 --- a/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.test.ts +++ b/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.test.ts @@ -12,7 +12,7 @@ const dynamicImportHandler = async () => await import("./reserveSlot.handler"); // The repository instance method is used to check for an existing reservation by someone else. // To keep this unit test isolated from the database layer, we stub this to always resolve falsey. -vi.mock("@calcom/lib/server/repository/PrismaSelectedSlotRepository", () => ({ +vi.mock("@calcom/features/selectedSlots/repositories/PrismaSelectedSlotRepository", () => ({ PrismaSelectedSlotRepository: vi.fn().mockImplementation(() => ({ findReservedByOthers: vi.fn().mockResolvedValue(null), })), diff --git a/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts b/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts index ccd4f13539..f7e8ced268 100644 --- a/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts +++ b/packages/trpc/server/routers/viewer/slots/reserveSlot.handler.ts @@ -3,9 +3,9 @@ import type { NextApiRequest, NextApiResponse } from "next"; import { v4 as uuid } from "uuid"; import dayjs from "@calcom/dayjs"; +import { PrismaSelectedSlotRepository } from "@calcom/features/selectedSlots/repositories/PrismaSelectedSlotRepository"; import { WEBAPP_URL } from "@calcom/lib/constants"; import { MINUTES_TO_BOOK } from "@calcom/lib/constants"; -import { PrismaSelectedSlotRepository } from "@calcom/lib/server/repository/PrismaSelectedSlotRepository"; import type { PrismaClient } from "@calcom/prisma"; import { BookingStatus } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/slots/util.ts b/packages/trpc/server/routers/viewer/slots/util.ts index 2bc0d9ca8e..764358584d 100644 --- a/packages/trpc/server/routers/viewer/slots/util.ts +++ b/packages/trpc/server/routers/viewer/slots/util.ts @@ -29,6 +29,7 @@ import type { IRedisService } from "@calcom/features/redis/IRedisService"; import { buildDateRanges } from "@calcom/features/schedules/lib/date-ranges"; import getSlots from "@calcom/features/schedules/lib/slots"; import type { ScheduleRepository } from "@calcom/features/schedules/repositories/ScheduleRepository"; +import type { ISelectedSlotRepository } from "@calcom/features/selectedSlots/repositories/ISelectedSlotRepository"; import type { NoSlotsNotificationService } from "@calcom/features/slots/handleNotificationWhenNoSlots"; import type { UserRepository } from "@calcom/features/users/repositories/UserRepository"; import { withSelectedCalendars } from "@calcom/features/users/repositories/UserRepository"; @@ -50,7 +51,6 @@ import { import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { withReporting } from "@calcom/lib/sentryWrapper"; -import type { ISelectedSlotRepository } from "@calcom/lib/server/repository/ISelectedSlotRepository"; import type { RoutingFormResponseRepository } from "@calcom/lib/server/repository/formResponse"; import { SchedulingType, PeriodType } from "@calcom/prisma/enums"; import type { EventBusyDate, EventBusyDetails } from "@calcom/types/Calendar"; diff --git a/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts b/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts index 55f3629376..52d4205d62 100644 --- a/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts +++ b/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler.ts @@ -7,7 +7,7 @@ import { checkRateLimitAndThrowError } from "@calcom/lib/checkRateLimitAndThrowE import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { isOrganisationOwner } from "@calcom/lib/server/queries/organisations"; +import { isOrganisationOwner } from "@calcom/features/pbac/utils/isOrganisationAdmin"; import prisma from "@calcom/prisma"; import { MembershipRole } from "@calcom/prisma/enums"; import type { CreationSource } from "@calcom/prisma/enums"; diff --git a/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMemberUtils.test.ts b/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMemberUtils.test.ts index d1952ee36e..13dd546321 100644 --- a/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMemberUtils.test.ts +++ b/packages/trpc/server/routers/viewer/teams/inviteMember/inviteMemberUtils.test.ts @@ -34,7 +34,7 @@ vi.mock("@calcom/prisma", () => { }; }); -vi.mock("@calcom/lib/server/queries/organisations", () => { +vi.mock("@calcom/features/pbac/utils/isOrganisationAdmin", () => { return { isOrganisationAdmin: vi.fn(), isOrganisationOwner: vi.fn(), diff --git a/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts b/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts index 0bf2ae5070..64bffde0c4 100644 --- a/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts +++ b/packages/trpc/server/routers/viewer/teams/inviteMember/utils.ts @@ -4,6 +4,7 @@ import type { TFunction } from "i18next"; import { getOrgFullOrigin } from "@calcom/ee/organizations/lib/orgDomains"; import { sendTeamInviteEmail } from "@calcom/emails/organization-email-service"; import { checkAdminOrOwner } from "@calcom/features/auth/lib/checkAdminOrOwner"; +import { getParsedTeam } from "@calcom/features/ee/teams/lib/getParsedTeam"; import { updateNewTeamMemberEventTypes } from "@calcom/features/ee/teams/lib/queries"; import { OnboardingPathService } from "@calcom/features/onboarding/lib/onboarding-path.service"; import { PermissionCheckService } from "@calcom/features/pbac/services/permission-check.service"; @@ -15,7 +16,6 @@ import { ENABLE_PROFILE_SWITCHER, WEBAPP_URL } from "@calcom/lib/constants"; import logger from "@calcom/lib/logger"; import { safeStringify } from "@calcom/lib/safeStringify"; import { getTranslation } from "@calcom/lib/server/i18n"; -import { getParsedTeam } from "@calcom/lib/server/repository/teamUtils"; import slugify from "@calcom/lib/slugify"; import { prisma } from "@calcom/prisma"; import type { Membership, OrganizationSettings, Team } from "@calcom/prisma/client"; diff --git a/packages/trpc/server/routers/viewer/workflows/update.handler.ts b/packages/trpc/server/routers/viewer/workflows/update.handler.ts index 72f927c379..22dd9656f2 100755 --- a/packages/trpc/server/routers/viewer/workflows/update.handler.ts +++ b/packages/trpc/server/routers/viewer/workflows/update.handler.ts @@ -8,6 +8,7 @@ import { WorkflowReminderRepository } from "@calcom/features/ee/workflows/lib/re import { scheduleWorkflowNotifications } from "@calcom/features/ee/workflows/lib/scheduleWorkflowNotifications"; import { verifyEmailSender } from "@calcom/features/ee/workflows/lib/verifyEmailSender"; import { WorkflowRepository } from "@calcom/features/ee/workflows/repositories/WorkflowRepository"; +import { WorkflowStepRepository } from "@calcom/features/ee/workflows/repositories/WorkflowStepRepository"; import { EventTypeRepository } from "@calcom/features/eventtypes/repositories/eventTypeRepository"; import tasker from "@calcom/features/tasker"; import { addPermissionsToWorkflow } from "@calcom/features/workflows/repositories/WorkflowPermissionsRepository"; @@ -15,7 +16,6 @@ import { IS_SELF_HOSTED, SCANNING_WORKFLOW_STEPS } from "@calcom/lib/constants"; import hasKeyInMetadata from "@calcom/lib/hasKeyInMetadata"; import logger from "@calcom/lib/logger"; import { WorkflowRelationsRepository } from "@calcom/lib/server/repository/workflowRelations"; -import { WorkflowStepRepository } from "@calcom/lib/server/repository/workflowStep"; import { prisma, type PrismaClient } from "@calcom/prisma"; import { WorkflowActions, WorkflowTemplates } from "@calcom/prisma/enums"; import { PhoneNumberSubscriptionStatus } from "@calcom/prisma/enums";