Skip to content

Commit b9074ae

Browse files
Better ioctopus type-safety (calcom#23541)
1 parent 13add03 commit b9074ae

48 files changed

Lines changed: 227 additions & 168 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

packages/features/bookings/lib/di/containers/RegularBookingServiceContainer.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

packages/features/bookings/lib/di/modules/RegularBookingServiceModule.ts

Lines changed: 0 additions & 39 deletions
This file was deleted.

packages/features/redis/di/redisModule.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { createModule } from "@evyweb/ioctopus";
2-
1+
import { createModule } from "@calcom/lib/di/di";
32
import { DI_TOKENS } from "@calcom/lib/di/tokens";
43

54
import { NoopRedisService } from "../NoopRedisService";

packages/features/bookings/lib/di/containers/InstantBookingCreateServiceContainer.ts renamed to packages/lib/di/bookings/containers/InstantBookingCreateService.container.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import { createContainer } from "@evyweb/ioctopus";
2-
31
import { DI_TOKENS } from "@calcom/lib/di/tokens";
42

5-
import type { InstantBookingCreateService } from "../modules/InstantBookingCreateServiceModule";
6-
import { instantBookingCreateServiceModule } from "../modules/InstantBookingCreateServiceModule";
3+
import { createContainer } from "../../di";
4+
import {
5+
type InstantBookingCreateService,
6+
instantBookingCreateServiceModule,
7+
} from "../modules/InstantBookingCreateService.module";
78

89
const container = createContainer();
910
container.load(DI_TOKENS.INSTANT_BOOKING_CREATE_SERVICE_MODULE, instantBookingCreateServiceModule);

packages/features/bookings/lib/di/containers/RecurringBookingServiceContainer.ts renamed to packages/lib/di/bookings/containers/RecurringBookingService.container.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { createContainer } from "@evyweb/ioctopus";
2-
31
import { bookingRepositoryModule } from "@calcom/lib/di/modules/Booking";
42
import { cacheModule } from "@calcom/lib/di/modules/Cache";
53
import { checkBookingAndDurationLimitsModule } from "@calcom/lib/di/modules/CheckBookingAndDurationLimits";
@@ -8,8 +6,11 @@ import { featuresRepositoryModule } from "@calcom/lib/di/modules/Features";
86
import { DI_TOKENS } from "@calcom/lib/di/tokens";
97
import { prismaModule } from "@calcom/prisma/prisma.module";
108

11-
import type { RecurringBookingService } from "../modules/RecurringBookingServiceModule";
12-
import { recurringBookingServiceModule } from "../modules/RecurringBookingServiceModule";
9+
import { createContainer } from "../../di";
10+
import {
11+
type RecurringBookingService,
12+
recurringBookingServiceModule,
13+
} from "../modules/RecurringBookingService.module";
1314

1415
const container = createContainer();
1516
container.load(DI_TOKENS.PRISMA_MODULE, prismaModule);
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { createContainer } from "../../di";
2+
import {
3+
type RegularBookingService,
4+
regularBookingServiceModule,
5+
} from "../modules/RegularBookingService.module";
6+
7+
const regularBookingServiceContainer = createContainer();
8+
9+
export function getRegularBookingService(): RegularBookingService {
10+
regularBookingServiceModule.loadModule(regularBookingServiceContainer);
11+
12+
return regularBookingServiceContainer.get<RegularBookingService>(regularBookingServiceModule.token);
13+
}

packages/features/bookings/lib/di/modules/InstantBookingCreateServiceModule.ts renamed to packages/lib/di/bookings/modules/InstantBookingCreateService.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { createModule } from "@evyweb/ioctopus";
2-
31
import { InstantBookingCreateService } from "@calcom/features/instant-meeting/handleInstantMeeting";
42
import { DI_TOKENS } from "@calcom/lib/di/tokens";
53

4+
import { createModule } from "../../di";
5+
66
export const instantBookingCreateServiceModule = createModule();
77

88
instantBookingCreateServiceModule

packages/features/bookings/lib/di/modules/RecurringBookingServiceModule.ts renamed to packages/lib/di/bookings/modules/RecurringBookingService.module.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import { createModule } from "@evyweb/ioctopus";
2-
1+
import { RecurringBookingService } from "@calcom/features/bookings/lib/handleNewRecurringBooking";
32
import { DI_TOKENS } from "@calcom/lib/di/tokens";
43

5-
import { RecurringBookingService } from "../../handleNewRecurringBooking";
4+
import { createModule } from "../../di";
65

76
export const recurringBookingServiceModule = createModule();
87

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { RegularBookingService } from "@calcom/features/bookings/lib/handleNewBooking";
2+
import { moduleLoader as bookingRepositoryModuleLoader } from "@calcom/lib/di/modules/Booking";
3+
import { moduleLoader as cacheModuleLoader } from "@calcom/lib/di/modules/Cache";
4+
import { moduleLoader as checkBookingAndDurationLimitsModuleLoader } from "@calcom/lib/di/modules/CheckBookingAndDurationLimits";
5+
import { moduleLoader as checkBookingLimitsModuleLoader } from "@calcom/lib/di/modules/CheckBookingLimits";
6+
import { moduleLoader as featuresRepositoryModuleLoader } from "@calcom/lib/di/modules/Features";
7+
import { DI_TOKENS } from "@calcom/lib/di/tokens";
8+
import { moduleLoader as prismaModuleLoader } from "@calcom/prisma/prisma.module";
9+
10+
import { bindModuleToClassOnToken, createModule } from "../../di";
11+
12+
const thisModule = createModule();
13+
const token = DI_TOKENS.REGULAR_BOOKING_SERVICE;
14+
const moduleToken = DI_TOKENS.REGULAR_BOOKING_SERVICE_MODULE;
15+
const loadModule = bindModuleToClassOnToken({
16+
module: thisModule,
17+
moduleToken,
18+
token,
19+
classs: RegularBookingService,
20+
depsMap: {
21+
cacheService: cacheModuleLoader,
22+
checkBookingAndDurationLimitsService: checkBookingAndDurationLimitsModuleLoader,
23+
prismaClient: prismaModuleLoader,
24+
bookingRepository: bookingRepositoryModuleLoader,
25+
featuresRepository: featuresRepositoryModuleLoader,
26+
checkBookingLimitsService: checkBookingLimitsModuleLoader,
27+
},
28+
});
29+
30+
export const regularBookingServiceModule = {
31+
token,
32+
loadModule,
33+
};
34+
35+
export type { RegularBookingService };

packages/lib/di/bookings/tokens.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export const BOOKING_DI_TOKENS = {
2+
REGULAR_BOOKING_SERVICE: Symbol("RegularBookingService"),
3+
REGULAR_BOOKING_SERVICE_MODULE: Symbol("RegularBookingServiceModule"),
4+
RECURRING_BOOKING_SERVICE: Symbol("RecurringBookingService"),
5+
RECURRING_BOOKING_SERVICE_MODULE: Symbol("RecurringBookingServiceModule"),
6+
INSTANT_BOOKING_CREATE_SERVICE: Symbol("InstantBookingCreateService"),
7+
INSTANT_BOOKING_CREATE_SERVICE_MODULE: Symbol("InstantBookingCreateServiceModule"),
8+
};

0 commit comments

Comments
 (0)