refactor: Move OrganizationOnboardingRepository from lib to /features/organizations (#25854)

* mv organization onboarding repository

* update imports
This commit is contained in:
Benny Joo authored and GitHub committed 2025-12-14 08:42:21 -03:00
1 parent e394a03365
commit 9ef650ceed
11 files changed
+31 -33

No files matched your search

@@ -4,10 +4,10 @@ import { getBillingProviderService } from "@calcom/ee/billing/di/containers/Bill
import { Plan, SubscriptionStatus } from "@calcom/features/ee/billing/repository/billing/IBillingRepository";
import { BillingEnabledOrgOnboardingService } from "@calcom/features/ee/organizations/lib/service/onboarding/BillingEnabledOrgOnboardingService";
import stripe from "@calcom/features/ee/payments/server/stripe";
import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository";
import { UserRepository } from "@calcom/features/users/repositories/UserRepository";
import logger from "@calcom/lib/logger";
import { safeStringify } from "@calcom/lib/safeStringify";
import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { prisma } from "@calcom/prisma";
import { getTeamBillingServiceFactory } from "../../di/containers/Billing";
@@ -1,20 +1,16 @@
import { getBillingProviderService } from "@calcom/features/ee/billing/di/containers/Billing";
import type { StripeBillingService } from "@calcom/features/ee/billing/service/billingProvider/StripeBillingService";
import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository";
import { UserRepository } from "@calcom/features/users/repositories/UserRepository";
import {
ORGANIZATION_SELF_SERVE_PRICE,
WEBAPP_URL,
ORG_TRIAL_DAYS,
} from "@calcom/lib/constants";
import { ORGANIZATION_SELF_SERVE_PRICE, WEBAPP_URL, ORG_TRIAL_DAYS } from "@calcom/lib/constants";
import { ErrorCode } from "@calcom/lib/errorCodes";
import { ErrorWithCode } from "@calcom/lib/errors";
import logger from "@calcom/lib/logger";
import { safeStringify } from "@calcom/lib/safeStringify";
import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { prisma } from "@calcom/prisma";
import type { OrganizationOnboarding } from "@calcom/prisma/client";
import { UserPermissionRole, type BillingPeriod } from "@calcom/prisma/enums";
import { userMetadata } from "@calcom/prisma/zod-utils";
import { ErrorCode } from "@calcom/lib/errorCodes";
import { ErrorWithCode } from "@calcom/lib/errors";
import { OrganizationPermissionService } from "./OrganizationPermissionService";
import type { OnboardingUser } from "./service/onboarding/types";
@@ -2,14 +2,15 @@ import type { TFunction } from "i18next";
import { sendOrganizationCreationEmail } from "@calcom/emails/organization-email-service";
import { sendEmailVerification } from "@calcom/features/auth/lib/verifyEmail";
import { getOrganizationRepository } from "@calcom/features/ee/organizations/di/OrganizationRepository.container";
import { getOrgFullOrigin } from "@calcom/features/ee/organizations/lib/orgDomains";
import {
assertCanCreateOrg,
findUserToBeOrgOwner,
setupDomain,
} from "@calcom/features/ee/organizations/lib/server/orgCreationUtils";
import { getOrganizationRepository } from "@calcom/features/ee/organizations/di/OrganizationRepository.container";
import { TeamRepository } from "@calcom/features/ee/teams/repositories/TeamRepository";
import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository";
import { UserRepository } from "@calcom/features/users/repositories/UserRepository";
import { DEFAULT_SCHEDULE, getAvailabilityFromSchedule } from "@calcom/lib/availability";
import { WEBAPP_URL } from "@calcom/lib/constants";
@@ -17,7 +18,6 @@ import logger from "@calcom/lib/logger";
import { safeStringify } from "@calcom/lib/safeStringify";
import { uploadLogo } from "@calcom/lib/server/avatar";
import { getTranslation } from "@calcom/lib/server/i18n";
import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { isBase64Image, resizeBase64Image } from "@calcom/lib/server/resizeBase64Image";
import slugify from "@calcom/lib/slugify";
import { prisma } from "@calcom/prisma";
@@ -165,9 +165,7 @@ export abstract class BaseOnboardingService implements IOrganizationOnboardingSe
}
return teams.map((team) =>
team.id === conflictingTeam.id
? { ...team, isBeingMigrated: true }
: team
team.id === conflictingTeam.id ? { ...team, isBeingMigrated: true } : team
);
}
@@ -270,7 +268,9 @@ export abstract class BaseOnboardingService implements IOrganizationOnboardingSe
}): Promise<{ logo?: string | null; bannerUrl?: string | null }> {
const [logo, bannerUrl] = await Promise.all([
input.logo ? resizeBase64Image(input.logo) : Promise.resolve(input.logo),
input.bannerUrl ? resizeBase64Image(input.bannerUrl, { maxSize: 1500 }) : Promise.resolve(input.bannerUrl),
input.bannerUrl
? resizeBase64Image(input.bannerUrl, { maxSize: 1500 })
: Promise.resolve(input.bannerUrl),
]);
return { logo, bannerUrl };
@@ -308,7 +308,9 @@ export abstract class BaseOnboardingService implements IOrganizationOnboardingSe
logoUrl?: string | null;
bannerUrl?: string | null;
}> {
const uploadedLogoUrl = logoUrl ? await this.uploadImageAsset({ image: logoUrl, teamId: organizationId }) : logoUrl;
const uploadedLogoUrl = logoUrl
? await this.uploadImageAsset({ image: logoUrl, teamId: organizationId })
: logoUrl;
const uploadedBannerUrl = bannerUrl
? await this.uploadImageAsset({ image: bannerUrl, teamId: organizationId, isBanner: true })
@@ -391,11 +393,11 @@ export abstract class BaseOnboardingService implements IOrganizationOnboardingSe
organization = {
...orgCreationResult.organization,
...await this.uploadOrganizationBrandAssets({
...(await this.uploadOrganizationBrandAssets({
logoUrl: orgData.logoUrl,
bannerUrl: orgData.bannerUrl,
organizationId: orgCreationResult.organization.id,
})
})),
};
const ownerProfile = orgCreationResult.ownerProfile;
@@ -472,11 +474,11 @@ export abstract class BaseOnboardingService implements IOrganizationOnboardingSe
organization = {
...orgCreationResult.organization,
...await this.uploadOrganizationBrandAssets({
...(await this.uploadOrganizationBrandAssets({
logoUrl: orgData.logoUrl,
bannerUrl: orgData.bannerUrl,
organizationId: orgCreationResult.organization.id,
})
})),
};
const { ownerProfile, orgOwner: orgOwnerFromCreation } = orgCreationResult;
@@ -616,7 +618,8 @@ export abstract class BaseOnboardingService implements IOrganizationOnboardingSe
} else if (member.teamName) {
targetTeamId = teamNameToId.get(member.teamName.toLowerCase());
log.debug(
`Member ${member.email}: teamName "${member.teamName}" -> resolved to ${targetTeamId || "not found"
`Member ${member.email}: teamName "${member.teamName}" -> resolved to ${
targetTeamId || "not found"
}`
);
}
@@ -758,4 +761,3 @@ export abstract class BaseOnboardingService implements IOrganizationOnboardingSe
});
}
}
@@ -1,10 +1,10 @@
import { findUserToBeOrgOwner } from "@calcom/features/ee/organizations/lib/server/orgCreationUtils";
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";
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 { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import type { Team, User } from "@calcom/prisma/client";
import { orgOnboardingInvitedMembersSchema, orgOnboardingTeamsSchema } from "@calcom/prisma/zod-utils";
@@ -1,12 +1,12 @@
import { LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService";
import { findUserToBeOrgOwner } from "@calcom/features/ee/organizations/lib/server/orgCreationUtils";
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";
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 { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { prisma } from "@calcom/prisma";
import type { Team, User } from "@calcom/prisma/client";
import { BillingPeriod } from "@calcom/prisma/enums";
@@ -28,7 +28,7 @@ const teamsSchema = orgOnboardingTeamsSchema;
/**
* Handles organization onboarding when billing is disabled (self-hosted admin flow).
*
* Flow:
* Flow:
* 1. Create onboarding record
* 2. Store teams/invites in database
* 3. Immediately create organization, teams, and invite members
@@ -3,8 +3,8 @@ import prismock from "../../../../../../../../tests/libs/__mocks__/prisma";
import { describe, expect, it, vi, beforeEach } from "vitest";
import { LicenseKeySingleton } from "@calcom/ee/common/server/LicenseKeyService";
import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository";
import * as constants from "@calcom/lib/constants";
import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { UserPermissionRole, CreationSource, MembershipRole, BillingPeriod } from "@calcom/prisma/enums";
import { createTeamsHandler } from "@calcom/trpc/server/routers/viewer/organizations/createTeams.handler";
import { inviteMembersWithNoInviterPermissionCheck } from "@calcom/trpc/server/routers/viewer/teams/inviteMember/inviteMember.handler";
@@ -13,7 +13,7 @@ import { SelfHostedOrganizationOnboardingService } from "../SelfHostedOnboarding
import type { CreateOnboardingIntentInput, OrganizationOnboardingData } from "../types";
vi.mock("../../OrganizationPaymentService");
vi.mock("@calcom/lib/server/repository/organizationOnboarding");
vi.mock("@calcom/features/organizations/repositories/OrganizationOnboardingRepository");
vi.mock("@calcom/ee/common/server/LicenseKeyService", () => ({
LicenseKeySingleton: {
getInstance: vi.fn(),
@@ -1,6 +1,6 @@
import { SelfHostedOrganizationOnboardingService } from "@calcom/features/ee/organizations/lib/service/onboarding/SelfHostedOnboardingService";
import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository";
import { IS_SELF_HOSTED } from "@calcom/lib/constants";
import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { TRPCError } from "@trpc/server";
@@ -8,9 +8,9 @@
* - The new endpoint returns checkoutUrl directly in the response
*/
import { OrganizationPaymentService } from "@calcom/features/ee/organizations/lib/OrganizationPaymentService";
import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository";
import logger from "@calcom/lib/logger";
import { safeStringify } from "@calcom/lib/safeStringify";
import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { TRPCError } from "@trpc/server";
@@ -1,4 +1,4 @@
import { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository";
import type { TrpcSessionUser } from "../../../types";
@@ -4,11 +4,11 @@ import {
assertCanCreateOrg,
findUserToBeOrgOwner,
} from "@calcom/features/ee/organizations/lib/server/orgCreationUtils";
import { OrganizationOnboardingRepository } from "@calcom/features/organizations/repositories/OrganizationOnboardingRepository";
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 { OrganizationOnboardingRepository } from "@calcom/lib/server/repository/organizationOnboarding";
import { prisma } from "@calcom/prisma";
import { UserPermissionRole } from "@calcom/prisma/enums";