@forklaunch/implementation-billing-base 0.1.17 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/__test__/schemaEquality.test.js +35 -14
- package/lib/eject/domain/schemas/checkoutSession.schema.ts +24 -4
- package/lib/eject/domain/schemas/paymentLink.schema.ts +24 -4
- package/lib/eject/services/billingPortal.service.ts +104 -32
- package/lib/eject/services/checkoutSession.service.ts +115 -32
- package/lib/eject/services/paymentLink.service.ts +116 -41
- package/lib/eject/services/plan.service.ts +60 -22
- package/lib/eject/services/subscription.service.ts +83 -26
- package/lib/schemas/checkoutSession.schema.d.ts +97 -11
- package/lib/schemas/checkoutSession.schema.d.ts.map +1 -1
- package/lib/schemas/paymentLink.schema.d.ts +101 -12
- package/lib/schemas/paymentLink.schema.d.ts.map +1 -1
- package/lib/schemas/typebox/checkoutSession.schema.d.ts +130 -10
- package/lib/schemas/typebox/checkoutSession.schema.d.ts.map +1 -1
- package/lib/schemas/typebox/checkoutSession.schema.js +9 -3
- package/lib/schemas/typebox/paymentLink.schema.d.ts +144 -12
- package/lib/schemas/typebox/paymentLink.schema.d.ts.map +1 -1
- package/lib/schemas/typebox/paymentLink.schema.js +9 -3
- package/lib/schemas/zod/checkoutSession.schema.d.ts +66 -12
- package/lib/schemas/zod/checkoutSession.schema.d.ts.map +1 -1
- package/lib/schemas/zod/checkoutSession.schema.js +9 -3
- package/lib/schemas/zod/paymentLink.schema.d.ts +66 -12
- package/lib/schemas/zod/paymentLink.schema.d.ts.map +1 -1
- package/lib/schemas/zod/paymentLink.schema.js +9 -3
- package/lib/services/billingPortal.service.d.ts +25 -7
- package/lib/services/billingPortal.service.d.ts.map +1 -1
- package/lib/services/billingPortal.service.js +87 -29
- package/lib/services/checkoutSession.service.d.ts +63 -20
- package/lib/services/checkoutSession.service.d.ts.map +1 -1
- package/lib/services/checkoutSession.service.js +67 -16
- package/lib/services/paymentLink.service.d.ts +39 -20
- package/lib/services/paymentLink.service.d.ts.map +1 -1
- package/lib/services/paymentLink.service.js +88 -24
- package/lib/services/plan.service.d.ts +19 -7
- package/lib/services/plan.service.d.ts.map +1 -1
- package/lib/services/plan.service.js +49 -17
- package/lib/services/subscription.service.d.ts +21 -7
- package/lib/services/subscription.service.d.ts.map +1 -1
- package/lib/services/subscription.service.js +72 -20
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -7,18 +7,20 @@ import {
|
|
|
7
7
|
unknown,
|
|
8
8
|
uuid
|
|
9
9
|
} from '@forklaunch/validator/zod';
|
|
10
|
-
export const CreatePaymentLinkSchema = (CurrencyEnum) => ({
|
|
10
|
+
export const CreatePaymentLinkSchema = (CurrencyEnum, StatusEnum) => ({
|
|
11
11
|
amount: number,
|
|
12
12
|
currency: enum_(CurrencyEnum),
|
|
13
13
|
description: optional(string),
|
|
14
14
|
metadata: optional(unknown),
|
|
15
15
|
successRedirectUri: string,
|
|
16
16
|
cancelRedirectUri: string,
|
|
17
|
+
expiresAt: date,
|
|
18
|
+
status: enum_(StatusEnum),
|
|
17
19
|
extraFields: optional(unknown)
|
|
18
20
|
});
|
|
19
21
|
export const UpdatePaymentLinkSchema =
|
|
20
22
|
({ uuidId }) =>
|
|
21
|
-
(CurrencyEnum) => ({
|
|
23
|
+
(CurrencyEnum, StatusEnum) => ({
|
|
22
24
|
id: uuidId ? uuid : string,
|
|
23
25
|
amount: optional(number),
|
|
24
26
|
currency: optional(enum_(CurrencyEnum)),
|
|
@@ -26,11 +28,13 @@ export const UpdatePaymentLinkSchema =
|
|
|
26
28
|
metadata: optional(unknown),
|
|
27
29
|
successRedirectUri: optional(string),
|
|
28
30
|
cancelRedirectUri: optional(string),
|
|
31
|
+
expiresAt: optional(date),
|
|
32
|
+
status: optional(enum_(StatusEnum)),
|
|
29
33
|
extraFields: optional(unknown)
|
|
30
34
|
});
|
|
31
35
|
export const PaymentLinkSchema =
|
|
32
36
|
({ uuidId }) =>
|
|
33
|
-
(CurrencyEnum) => ({
|
|
37
|
+
(CurrencyEnum, StatusEnum) => ({
|
|
34
38
|
id: uuidId ? uuid : string,
|
|
35
39
|
amount: number,
|
|
36
40
|
currency: enum_(CurrencyEnum),
|
|
@@ -38,6 +42,8 @@ export const PaymentLinkSchema =
|
|
|
38
42
|
metadata: optional(unknown),
|
|
39
43
|
successRedirectUri: string,
|
|
40
44
|
cancelRedirectUri: string,
|
|
45
|
+
expiresAt: date,
|
|
46
|
+
status: enum_(StatusEnum),
|
|
41
47
|
extraFields: optional(unknown),
|
|
42
48
|
createdAt: optional(date),
|
|
43
49
|
updatedAt: optional(date)
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { IdDto } from '@forklaunch/common';
|
|
2
2
|
import { TtlCache } from '@forklaunch/core/cache';
|
|
3
|
+
import {
|
|
4
|
+
MetricsDefinition,
|
|
5
|
+
OpenTelemetryCollector,
|
|
6
|
+
TelemetryOptions
|
|
7
|
+
} from '@forklaunch/core/http';
|
|
3
8
|
import {
|
|
4
9
|
RequestDtoMapperConstructor,
|
|
5
10
|
ResponseDtoMapperConstructor
|
|
6
11
|
} from '@forklaunch/core/mappers';
|
|
7
|
-
import {
|
|
8
|
-
MetricsDefinition,
|
|
9
|
-
OpenTelemetryCollector
|
|
10
|
-
} from '@forklaunch/core/http';
|
|
11
12
|
import { BillingPortalService } from '@forklaunch/interfaces-billing/interfaces';
|
|
12
13
|
import {
|
|
13
14
|
BillingPortalDto,
|
|
@@ -15,6 +16,7 @@ import {
|
|
|
15
16
|
UpdateBillingPortalDto
|
|
16
17
|
} from '@forklaunch/interfaces-billing/types';
|
|
17
18
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
19
|
+
import { EntityManager } from '@mikro-orm/core';
|
|
18
20
|
export declare class BaseBillingPortalService<
|
|
19
21
|
SchemaValidator extends AnySchemaValidator,
|
|
20
22
|
Metrics extends MetricsDefinition = MetricsDefinition,
|
|
@@ -39,10 +41,11 @@ export declare class BaseBillingPortalService<
|
|
|
39
41
|
> implements BillingPortalService
|
|
40
42
|
{
|
|
41
43
|
#private;
|
|
44
|
+
protected em: EntityManager;
|
|
42
45
|
protected cache: TtlCache;
|
|
43
46
|
protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
|
|
44
47
|
protected schemaValidator: SchemaValidator;
|
|
45
|
-
protected
|
|
48
|
+
protected mappers: {
|
|
46
49
|
BillingPortalDtoMapper: ResponseDtoMapperConstructor<
|
|
47
50
|
SchemaValidator,
|
|
48
51
|
Dto['BillingPortalDtoMapper'],
|
|
@@ -59,11 +62,20 @@ export declare class BaseBillingPortalService<
|
|
|
59
62
|
Entities['UpdateBillingPortalDtoMapper']
|
|
60
63
|
>;
|
|
61
64
|
};
|
|
65
|
+
readonly options?:
|
|
66
|
+
| {
|
|
67
|
+
telemetry?: TelemetryOptions;
|
|
68
|
+
enableDatabaseBackup?: boolean;
|
|
69
|
+
}
|
|
70
|
+
| undefined;
|
|
71
|
+
private evaluatedTelemetryOptions;
|
|
72
|
+
private enableDatabaseBackup;
|
|
62
73
|
constructor(
|
|
74
|
+
em: EntityManager,
|
|
63
75
|
cache: TtlCache,
|
|
64
76
|
openTelemetryCollector: OpenTelemetryCollector<Metrics>,
|
|
65
77
|
schemaValidator: SchemaValidator,
|
|
66
|
-
|
|
78
|
+
mappers: {
|
|
67
79
|
BillingPortalDtoMapper: ResponseDtoMapperConstructor<
|
|
68
80
|
SchemaValidator,
|
|
69
81
|
Dto['BillingPortalDtoMapper'],
|
|
@@ -79,7 +91,13 @@ export declare class BaseBillingPortalService<
|
|
|
79
91
|
Dto['UpdateBillingPortalDtoMapper'],
|
|
80
92
|
Entities['UpdateBillingPortalDtoMapper']
|
|
81
93
|
>;
|
|
82
|
-
}
|
|
94
|
+
},
|
|
95
|
+
options?:
|
|
96
|
+
| {
|
|
97
|
+
telemetry?: TelemetryOptions;
|
|
98
|
+
enableDatabaseBackup?: boolean;
|
|
99
|
+
}
|
|
100
|
+
| undefined
|
|
83
101
|
);
|
|
84
102
|
protected createCacheKey: (id: string) => string;
|
|
85
103
|
createBillingPortalSession(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billingPortal.service.d.ts","sourceRoot":"","sources":["../../services/billingPortal.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAkB,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"billingPortal.service.d.ts","sourceRoot":"","sources":["../../services/billingPortal.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,64 +1,122 @@
|
|
|
1
1
|
import { createCacheKey } from '@forklaunch/core/cache';
|
|
2
|
+
import { evaluateTelemetryOptions } from '@forklaunch/core/http';
|
|
2
3
|
import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
|
|
3
4
|
export class BaseBillingPortalService {
|
|
5
|
+
em;
|
|
4
6
|
cache;
|
|
5
7
|
openTelemetryCollector;
|
|
6
8
|
schemaValidator;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
mappers;
|
|
10
|
+
options;
|
|
11
|
+
#mappers;
|
|
12
|
+
evaluatedTelemetryOptions;
|
|
13
|
+
enableDatabaseBackup;
|
|
14
|
+
constructor(
|
|
15
|
+
em,
|
|
16
|
+
cache,
|
|
17
|
+
openTelemetryCollector,
|
|
18
|
+
schemaValidator,
|
|
19
|
+
mappers,
|
|
20
|
+
options
|
|
21
|
+
) {
|
|
22
|
+
this.em = em;
|
|
10
23
|
this.cache = cache;
|
|
11
24
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
12
25
|
this.schemaValidator = schemaValidator;
|
|
13
|
-
this.
|
|
14
|
-
this
|
|
26
|
+
this.mappers = mappers;
|
|
27
|
+
this.options = options;
|
|
28
|
+
this.#mappers = transformIntoInternalDtoMapper(mappers, schemaValidator);
|
|
29
|
+
this.enableDatabaseBackup = options?.enableDatabaseBackup ?? false;
|
|
30
|
+
this.evaluatedTelemetryOptions = options?.telemetry
|
|
31
|
+
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
32
|
+
: {
|
|
33
|
+
logging: false,
|
|
34
|
+
metrics: false,
|
|
35
|
+
tracing: false
|
|
36
|
+
};
|
|
15
37
|
}
|
|
16
38
|
createCacheKey = createCacheKey('billing_portal_session');
|
|
17
39
|
async createBillingPortalSession(billingPortalDto) {
|
|
18
|
-
|
|
19
|
-
this
|
|
40
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
41
|
+
this.openTelemetryCollector.info(
|
|
42
|
+
'Creating billing portal session',
|
|
20
43
|
billingPortalDto
|
|
21
44
|
);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
45
|
+
}
|
|
46
|
+
const billingPortal =
|
|
47
|
+
await this.#mappers.CreateBillingPortalDtoMapper.deserializeDtoToEntity(
|
|
48
|
+
billingPortalDto,
|
|
49
|
+
this.em
|
|
50
|
+
);
|
|
51
|
+
if (this.enableDatabaseBackup) {
|
|
52
|
+
await this.em.persistAndFlush(billingPortal);
|
|
53
|
+
}
|
|
54
|
+
const createdBillingPortalDto =
|
|
55
|
+
await this.#mappers.BillingPortalDtoMapper.serializeEntityToDto(
|
|
56
|
+
billingPortal
|
|
57
|
+
);
|
|
26
58
|
await this.cache.putRecord({
|
|
27
|
-
key: this.createCacheKey(
|
|
28
|
-
value:
|
|
59
|
+
key: this.createCacheKey(createdBillingPortalDto.id),
|
|
60
|
+
value: createdBillingPortalDto,
|
|
29
61
|
ttlMilliseconds: this.cache.getTtlMilliseconds()
|
|
30
62
|
});
|
|
31
|
-
return
|
|
32
|
-
billingPortalSession
|
|
33
|
-
);
|
|
63
|
+
return createdBillingPortalDto;
|
|
34
64
|
}
|
|
35
65
|
async getBillingPortalSession(idDto) {
|
|
36
|
-
|
|
66
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
67
|
+
this.openTelemetryCollector.info('Getting billing portal session', idDto);
|
|
68
|
+
}
|
|
69
|
+
const billingPortalDetails = await this.cache.readRecord(
|
|
37
70
|
this.createCacheKey(idDto.id)
|
|
38
71
|
);
|
|
39
|
-
if (!
|
|
72
|
+
if (!billingPortalDetails) {
|
|
40
73
|
throw new Error('Session not found');
|
|
41
74
|
}
|
|
42
|
-
return
|
|
43
|
-
billingPortalSessionDetails.value
|
|
44
|
-
);
|
|
75
|
+
return billingPortalDetails.value;
|
|
45
76
|
}
|
|
46
77
|
async updateBillingPortalSession(billingPortalDto) {
|
|
47
|
-
|
|
48
|
-
this
|
|
78
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
79
|
+
this.openTelemetryCollector.info(
|
|
80
|
+
'Updating billing portal session',
|
|
49
81
|
billingPortalDto
|
|
50
82
|
);
|
|
51
|
-
|
|
83
|
+
}
|
|
84
|
+
const existingBillingPortal = (
|
|
85
|
+
await this.cache.readRecord(this.createCacheKey(billingPortalDto.id))
|
|
86
|
+
)?.value;
|
|
87
|
+
if (!existingBillingPortal) {
|
|
88
|
+
throw new Error('Session not found');
|
|
89
|
+
}
|
|
90
|
+
const billingPortal =
|
|
91
|
+
await this.#mappers.UpdateBillingPortalDtoMapper.deserializeDtoToEntity(
|
|
92
|
+
billingPortalDto,
|
|
93
|
+
this.em
|
|
94
|
+
);
|
|
95
|
+
if (this.enableDatabaseBackup) {
|
|
96
|
+
await this.em.persistAndFlush({
|
|
97
|
+
billingPortal
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const updatedBillingPortalDto = {
|
|
101
|
+
...existingBillingPortal,
|
|
102
|
+
...(await this.#mappers.BillingPortalDtoMapper.serializeEntityToDto(
|
|
103
|
+
billingPortal
|
|
104
|
+
))
|
|
105
|
+
};
|
|
52
106
|
await this.cache.putRecord({
|
|
53
|
-
key: this.createCacheKey(
|
|
54
|
-
value:
|
|
107
|
+
key: this.createCacheKey(updatedBillingPortalDto.id),
|
|
108
|
+
value: updatedBillingPortalDto,
|
|
55
109
|
ttlMilliseconds: this.cache.getTtlMilliseconds()
|
|
56
110
|
});
|
|
57
|
-
return
|
|
58
|
-
billingPortalSession
|
|
59
|
-
);
|
|
111
|
+
return updatedBillingPortalDto;
|
|
60
112
|
}
|
|
61
113
|
async expireBillingPortalSession(idDto) {
|
|
114
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
115
|
+
this.openTelemetryCollector.info(
|
|
116
|
+
'Expiring billing portal session',
|
|
117
|
+
idDto
|
|
118
|
+
);
|
|
119
|
+
}
|
|
62
120
|
const sessionExists = await this.cache.readRecord(
|
|
63
121
|
this.createCacheKey(idDto.id)
|
|
64
122
|
);
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { IdDto } from '@forklaunch/common';
|
|
2
2
|
import { TtlCache } from '@forklaunch/core/cache';
|
|
3
|
+
import {
|
|
4
|
+
MetricsDefinition,
|
|
5
|
+
OpenTelemetryCollector,
|
|
6
|
+
TelemetryOptions
|
|
7
|
+
} from '@forklaunch/core/http';
|
|
3
8
|
import {
|
|
4
9
|
RequestDtoMapperConstructor,
|
|
5
10
|
ResponseDtoMapperConstructor
|
|
6
11
|
} from '@forklaunch/core/mappers';
|
|
7
|
-
import {
|
|
8
|
-
MetricsDefinition,
|
|
9
|
-
OpenTelemetryCollector
|
|
10
|
-
} from '@forklaunch/core/http';
|
|
11
12
|
import { CheckoutSessionService } from '@forklaunch/interfaces-billing/interfaces';
|
|
12
13
|
import {
|
|
13
14
|
CheckoutSessionDto,
|
|
@@ -15,35 +16,62 @@ import {
|
|
|
15
16
|
UpdateCheckoutSessionDto
|
|
16
17
|
} from '@forklaunch/interfaces-billing/types';
|
|
17
18
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
19
|
+
import { EntityManager } from '@mikro-orm/core';
|
|
18
20
|
export declare class BaseCheckoutSessionService<
|
|
19
21
|
SchemaValidator extends AnySchemaValidator,
|
|
20
22
|
PaymentMethodEnum,
|
|
23
|
+
StatusEnum,
|
|
21
24
|
Metrics extends MetricsDefinition = MetricsDefinition,
|
|
22
25
|
Dto extends {
|
|
23
|
-
CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum>;
|
|
24
|
-
CreateCheckoutSessionDtoMapper: CreateCheckoutSessionDto<
|
|
25
|
-
|
|
26
|
+
CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum, StatusEnum>;
|
|
27
|
+
CreateCheckoutSessionDtoMapper: CreateCheckoutSessionDto<
|
|
28
|
+
PaymentMethodEnum,
|
|
29
|
+
StatusEnum
|
|
30
|
+
>;
|
|
31
|
+
UpdateCheckoutSessionDtoMapper: UpdateCheckoutSessionDto<
|
|
32
|
+
PaymentMethodEnum,
|
|
33
|
+
StatusEnum
|
|
34
|
+
>;
|
|
26
35
|
} = {
|
|
27
|
-
CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum>;
|
|
28
|
-
CreateCheckoutSessionDtoMapper: CreateCheckoutSessionDto<
|
|
29
|
-
|
|
36
|
+
CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum, StatusEnum>;
|
|
37
|
+
CreateCheckoutSessionDtoMapper: CreateCheckoutSessionDto<
|
|
38
|
+
PaymentMethodEnum,
|
|
39
|
+
StatusEnum
|
|
40
|
+
>;
|
|
41
|
+
UpdateCheckoutSessionDtoMapper: UpdateCheckoutSessionDto<
|
|
42
|
+
PaymentMethodEnum,
|
|
43
|
+
StatusEnum
|
|
44
|
+
>;
|
|
30
45
|
},
|
|
31
46
|
Entities extends {
|
|
32
|
-
CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum>;
|
|
33
|
-
CreateCheckoutSessionDtoMapper: CheckoutSessionDto<
|
|
34
|
-
|
|
47
|
+
CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum, StatusEnum>;
|
|
48
|
+
CreateCheckoutSessionDtoMapper: CheckoutSessionDto<
|
|
49
|
+
PaymentMethodEnum,
|
|
50
|
+
StatusEnum
|
|
51
|
+
>;
|
|
52
|
+
UpdateCheckoutSessionDtoMapper: CheckoutSessionDto<
|
|
53
|
+
PaymentMethodEnum,
|
|
54
|
+
StatusEnum
|
|
55
|
+
>;
|
|
35
56
|
} = {
|
|
36
|
-
CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum>;
|
|
37
|
-
CreateCheckoutSessionDtoMapper: CheckoutSessionDto<
|
|
38
|
-
|
|
57
|
+
CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum, StatusEnum>;
|
|
58
|
+
CreateCheckoutSessionDtoMapper: CheckoutSessionDto<
|
|
59
|
+
PaymentMethodEnum,
|
|
60
|
+
StatusEnum
|
|
61
|
+
>;
|
|
62
|
+
UpdateCheckoutSessionDtoMapper: CheckoutSessionDto<
|
|
63
|
+
PaymentMethodEnum,
|
|
64
|
+
StatusEnum
|
|
65
|
+
>;
|
|
39
66
|
}
|
|
40
|
-
> implements CheckoutSessionService<PaymentMethodEnum>
|
|
67
|
+
> implements CheckoutSessionService<PaymentMethodEnum, StatusEnum>
|
|
41
68
|
{
|
|
42
69
|
#private;
|
|
70
|
+
protected readonly em: EntityManager;
|
|
43
71
|
protected readonly cache: TtlCache;
|
|
44
72
|
protected readonly openTelemetryCollector: OpenTelemetryCollector<Metrics>;
|
|
45
73
|
protected readonly schemaValidator: SchemaValidator;
|
|
46
|
-
protected readonly
|
|
74
|
+
protected readonly mappers: {
|
|
47
75
|
CheckoutSessionDtoMapper: ResponseDtoMapperConstructor<
|
|
48
76
|
SchemaValidator,
|
|
49
77
|
Dto['CheckoutSessionDtoMapper'],
|
|
@@ -60,11 +88,20 @@ export declare class BaseCheckoutSessionService<
|
|
|
60
88
|
Entities['UpdateCheckoutSessionDtoMapper']
|
|
61
89
|
>;
|
|
62
90
|
};
|
|
91
|
+
readonly options?:
|
|
92
|
+
| {
|
|
93
|
+
enableDatabaseBackup?: boolean;
|
|
94
|
+
telemetry?: TelemetryOptions;
|
|
95
|
+
}
|
|
96
|
+
| undefined;
|
|
97
|
+
private evaluatedTelemetryOptions;
|
|
98
|
+
private enableDatabaseBackup;
|
|
63
99
|
constructor(
|
|
100
|
+
em: EntityManager,
|
|
64
101
|
cache: TtlCache,
|
|
65
102
|
openTelemetryCollector: OpenTelemetryCollector<Metrics>,
|
|
66
103
|
schemaValidator: SchemaValidator,
|
|
67
|
-
|
|
104
|
+
mappers: {
|
|
68
105
|
CheckoutSessionDtoMapper: ResponseDtoMapperConstructor<
|
|
69
106
|
SchemaValidator,
|
|
70
107
|
Dto['CheckoutSessionDtoMapper'],
|
|
@@ -80,7 +117,13 @@ export declare class BaseCheckoutSessionService<
|
|
|
80
117
|
Dto['UpdateCheckoutSessionDtoMapper'],
|
|
81
118
|
Entities['UpdateCheckoutSessionDtoMapper']
|
|
82
119
|
>;
|
|
83
|
-
}
|
|
120
|
+
},
|
|
121
|
+
options?:
|
|
122
|
+
| {
|
|
123
|
+
enableDatabaseBackup?: boolean;
|
|
124
|
+
telemetry?: TelemetryOptions;
|
|
125
|
+
}
|
|
126
|
+
| undefined
|
|
84
127
|
);
|
|
85
128
|
protected createCacheKey: (id: string) => string;
|
|
86
129
|
createCheckoutSession(
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkoutSession.service.d.ts","sourceRoot":"","sources":["../../services/checkoutSession.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAkB,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"checkoutSession.service.d.ts","sourceRoot":"","sources":["../../services/checkoutSession.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,66 @@
|
|
|
1
1
|
import { createCacheKey } from '@forklaunch/core/cache';
|
|
2
|
+
import { evaluateTelemetryOptions } from '@forklaunch/core/http';
|
|
2
3
|
import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
|
|
3
4
|
export class BaseCheckoutSessionService {
|
|
5
|
+
em;
|
|
4
6
|
cache;
|
|
5
7
|
openTelemetryCollector;
|
|
6
8
|
schemaValidator;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
mappers;
|
|
10
|
+
options;
|
|
11
|
+
#mappers;
|
|
12
|
+
evaluatedTelemetryOptions;
|
|
13
|
+
enableDatabaseBackup;
|
|
14
|
+
constructor(
|
|
15
|
+
em,
|
|
16
|
+
cache,
|
|
17
|
+
openTelemetryCollector,
|
|
18
|
+
schemaValidator,
|
|
19
|
+
mappers,
|
|
20
|
+
options
|
|
21
|
+
) {
|
|
22
|
+
this.em = em;
|
|
10
23
|
this.cache = cache;
|
|
11
24
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
12
25
|
this.schemaValidator = schemaValidator;
|
|
13
|
-
this.
|
|
14
|
-
this
|
|
26
|
+
this.mappers = mappers;
|
|
27
|
+
this.options = options;
|
|
28
|
+
this.#mappers = transformIntoInternalDtoMapper(mappers, schemaValidator);
|
|
29
|
+
this.enableDatabaseBackup = options?.enableDatabaseBackup ?? false;
|
|
30
|
+
this.evaluatedTelemetryOptions = options?.telemetry
|
|
31
|
+
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
32
|
+
: {
|
|
33
|
+
logging: false,
|
|
34
|
+
metrics: false,
|
|
35
|
+
tracing: false
|
|
36
|
+
};
|
|
15
37
|
}
|
|
16
38
|
createCacheKey = createCacheKey('checkout_session');
|
|
17
39
|
async createCheckoutSession(checkoutSessionDto) {
|
|
18
|
-
|
|
19
|
-
this
|
|
40
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
41
|
+
this.openTelemetryCollector.info(
|
|
42
|
+
'Creating checkout session',
|
|
20
43
|
checkoutSessionDto
|
|
21
44
|
);
|
|
22
|
-
|
|
45
|
+
}
|
|
46
|
+
const checkoutSession =
|
|
47
|
+
await this.#mappers.CreateCheckoutSessionDtoMapper.deserializeDtoToEntity(
|
|
48
|
+
checkoutSessionDto,
|
|
49
|
+
this.em
|
|
50
|
+
);
|
|
51
|
+
const createdCheckoutSessionDto =
|
|
52
|
+
await this.#mappers.CheckoutSessionDtoMapper.serializeEntityToDto(
|
|
53
|
+
checkoutSession
|
|
54
|
+
);
|
|
55
|
+
if (this.enableDatabaseBackup) {
|
|
56
|
+
await this.em.persistAndFlush(checkoutSession);
|
|
57
|
+
}
|
|
23
58
|
await this.cache.putRecord({
|
|
24
|
-
key: this.createCacheKey(
|
|
25
|
-
value:
|
|
59
|
+
key: this.createCacheKey(createdCheckoutSessionDto.id),
|
|
60
|
+
value: createdCheckoutSessionDto,
|
|
26
61
|
ttlMilliseconds: this.cache.getTtlMilliseconds()
|
|
27
62
|
});
|
|
28
|
-
return
|
|
29
|
-
checkoutSession
|
|
30
|
-
);
|
|
63
|
+
return createdCheckoutSessionDto;
|
|
31
64
|
}
|
|
32
65
|
async getCheckoutSession({ id }) {
|
|
33
66
|
const checkoutSessionDetails = await this.cache.readRecord(
|
|
@@ -36,7 +69,7 @@ export class BaseCheckoutSessionService {
|
|
|
36
69
|
if (!checkoutSessionDetails) {
|
|
37
70
|
throw new Error('Session not found');
|
|
38
71
|
}
|
|
39
|
-
return this.#
|
|
72
|
+
return this.#mappers.CheckoutSessionDtoMapper.serializeEntityToDto(
|
|
40
73
|
checkoutSessionDetails.value
|
|
41
74
|
);
|
|
42
75
|
}
|
|
@@ -50,11 +83,29 @@ export class BaseCheckoutSessionService {
|
|
|
50
83
|
await this.cache.deleteRecord(this.createCacheKey(id));
|
|
51
84
|
}
|
|
52
85
|
async handleCheckoutSuccess({ id }) {
|
|
53
|
-
this.
|
|
86
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
87
|
+
this.openTelemetryCollector.info('Checkout success', { id });
|
|
88
|
+
}
|
|
89
|
+
if (this.enableDatabaseBackup) {
|
|
90
|
+
const checkoutSession = await this.em.upsert('CheckoutSession', {
|
|
91
|
+
id,
|
|
92
|
+
status: 'SUCCESS'
|
|
93
|
+
});
|
|
94
|
+
await this.em.persistAndFlush(checkoutSession);
|
|
95
|
+
}
|
|
54
96
|
await this.cache.deleteRecord(this.createCacheKey(id));
|
|
55
97
|
}
|
|
56
98
|
async handleCheckoutFailure({ id }) {
|
|
57
|
-
this.
|
|
99
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
100
|
+
this.openTelemetryCollector.info('Checkout failure', { id });
|
|
101
|
+
}
|
|
102
|
+
if (this.enableDatabaseBackup) {
|
|
103
|
+
const checkoutSession = await this.em.upsert('CheckoutSession', {
|
|
104
|
+
id,
|
|
105
|
+
status: 'FAILED'
|
|
106
|
+
});
|
|
107
|
+
await this.em.persistAndFlush(checkoutSession);
|
|
108
|
+
}
|
|
58
109
|
await this.cache.deleteRecord(this.createCacheKey(id));
|
|
59
110
|
}
|
|
60
111
|
}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import { IdDto, IdsDto } from '@forklaunch/common';
|
|
2
2
|
import { TtlCache } from '@forklaunch/core/cache';
|
|
3
|
+
import {
|
|
4
|
+
MetricsDefinition,
|
|
5
|
+
OpenTelemetryCollector,
|
|
6
|
+
TelemetryOptions
|
|
7
|
+
} from '@forklaunch/core/http';
|
|
3
8
|
import {
|
|
4
9
|
RequestDtoMapperConstructor,
|
|
5
10
|
ResponseDtoMapperConstructor
|
|
6
11
|
} from '@forklaunch/core/mappers';
|
|
7
|
-
import {
|
|
8
|
-
MetricsDefinition,
|
|
9
|
-
OpenTelemetryCollector
|
|
10
|
-
} from '@forklaunch/core/http';
|
|
11
12
|
import { PaymentLinkService } from '@forklaunch/interfaces-billing/interfaces';
|
|
12
13
|
import {
|
|
13
14
|
CreatePaymentLinkDto,
|
|
@@ -15,35 +16,38 @@ import {
|
|
|
15
16
|
UpdatePaymentLinkDto
|
|
16
17
|
} from '@forklaunch/interfaces-billing/types';
|
|
17
18
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
19
|
+
import { EntityManager } from '@mikro-orm/core';
|
|
18
20
|
export declare class BasePaymentLinkService<
|
|
19
21
|
SchemaValidator extends AnySchemaValidator,
|
|
20
22
|
CurrencyEnum,
|
|
23
|
+
StatusEnum,
|
|
21
24
|
Metrics extends MetricsDefinition = MetricsDefinition,
|
|
22
25
|
Dto extends {
|
|
23
|
-
PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum>;
|
|
24
|
-
CreatePaymentLinkDtoMapper: CreatePaymentLinkDto<CurrencyEnum>;
|
|
25
|
-
UpdatePaymentLinkDtoMapper: UpdatePaymentLinkDto<CurrencyEnum>;
|
|
26
|
+
PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
27
|
+
CreatePaymentLinkDtoMapper: CreatePaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
28
|
+
UpdatePaymentLinkDtoMapper: UpdatePaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
26
29
|
} = {
|
|
27
|
-
PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum>;
|
|
28
|
-
CreatePaymentLinkDtoMapper: CreatePaymentLinkDto<CurrencyEnum>;
|
|
29
|
-
UpdatePaymentLinkDtoMapper: UpdatePaymentLinkDto<CurrencyEnum>;
|
|
30
|
+
PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
31
|
+
CreatePaymentLinkDtoMapper: CreatePaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
32
|
+
UpdatePaymentLinkDtoMapper: UpdatePaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
30
33
|
},
|
|
31
34
|
Entities extends {
|
|
32
|
-
PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum>;
|
|
33
|
-
CreatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum>;
|
|
34
|
-
UpdatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum>;
|
|
35
|
+
PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
36
|
+
CreatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
37
|
+
UpdatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
35
38
|
} = {
|
|
36
|
-
PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum>;
|
|
37
|
-
CreatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum>;
|
|
38
|
-
UpdatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum>;
|
|
39
|
+
PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
40
|
+
CreatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
41
|
+
UpdatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
|
|
39
42
|
}
|
|
40
|
-
> implements PaymentLinkService<CurrencyEnum>
|
|
43
|
+
> implements PaymentLinkService<CurrencyEnum, StatusEnum>
|
|
41
44
|
{
|
|
42
45
|
#private;
|
|
46
|
+
protected readonly em: EntityManager;
|
|
43
47
|
protected readonly cache: TtlCache;
|
|
44
48
|
protected readonly openTelemetryCollector: OpenTelemetryCollector<Metrics>;
|
|
45
49
|
protected readonly schemaValidator: SchemaValidator;
|
|
46
|
-
protected readonly
|
|
50
|
+
protected readonly mappers: {
|
|
47
51
|
PaymentLinkDtoMapper: ResponseDtoMapperConstructor<
|
|
48
52
|
SchemaValidator,
|
|
49
53
|
Dto['PaymentLinkDtoMapper'],
|
|
@@ -60,11 +64,20 @@ export declare class BasePaymentLinkService<
|
|
|
60
64
|
Entities['UpdatePaymentLinkDtoMapper']
|
|
61
65
|
>;
|
|
62
66
|
};
|
|
67
|
+
readonly options?:
|
|
68
|
+
| {
|
|
69
|
+
enableDatabaseBackup?: boolean;
|
|
70
|
+
telemetry?: TelemetryOptions;
|
|
71
|
+
}
|
|
72
|
+
| undefined;
|
|
73
|
+
private evaluatedTelemetryOptions;
|
|
74
|
+
private enableDatabaseBackup;
|
|
63
75
|
constructor(
|
|
76
|
+
em: EntityManager,
|
|
64
77
|
cache: TtlCache,
|
|
65
78
|
openTelemetryCollector: OpenTelemetryCollector<Metrics>,
|
|
66
79
|
schemaValidator: SchemaValidator,
|
|
67
|
-
|
|
80
|
+
mappers: {
|
|
68
81
|
PaymentLinkDtoMapper: ResponseDtoMapperConstructor<
|
|
69
82
|
SchemaValidator,
|
|
70
83
|
Dto['PaymentLinkDtoMapper'],
|
|
@@ -80,7 +93,13 @@ export declare class BasePaymentLinkService<
|
|
|
80
93
|
Dto['UpdatePaymentLinkDtoMapper'],
|
|
81
94
|
Entities['UpdatePaymentLinkDtoMapper']
|
|
82
95
|
>;
|
|
83
|
-
}
|
|
96
|
+
},
|
|
97
|
+
options?:
|
|
98
|
+
| {
|
|
99
|
+
enableDatabaseBackup?: boolean;
|
|
100
|
+
telemetry?: TelemetryOptions;
|
|
101
|
+
}
|
|
102
|
+
| undefined
|
|
84
103
|
);
|
|
85
104
|
protected cacheKeyPrefix: string;
|
|
86
105
|
protected createCacheKey: (id: string) => string;
|