feat(analytics): add clickhouse (#11174)
This commit is contained in:
+9
@@ -24,6 +24,8 @@ import { handleException } from 'src/engine/core-modules/exception-handler/http-
|
||||
import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handler/exception-handler.service';
|
||||
import { CloudflareSecretMatchGuard } from 'src/engine/core-modules/domain-manager/guards/cloudflare-secret.guard';
|
||||
import { CustomDomainService } from 'src/engine/core-modules/domain-manager/services/custom-domain.service';
|
||||
import { AnalyticsService } from 'src/engine/core-modules/analytics/services/analytics.service';
|
||||
import { CUSTOM_DOMAIN_ACTIVATED_EVENT } from 'src/engine/core-modules/analytics/utils/events/track/custom-domain/custom-domain-activated';
|
||||
|
||||
@Controller('cloudflare')
|
||||
@UseFilters(AuthRestApiExceptionFilter)
|
||||
@@ -34,6 +36,7 @@ export class CloudflareController {
|
||||
private readonly domainManagerService: DomainManagerService,
|
||||
private readonly customDomainService: CustomDomainService,
|
||||
private readonly exceptionHandlerService: ExceptionHandlerService,
|
||||
private readonly analyticsService: AnalyticsService,
|
||||
) {}
|
||||
|
||||
@Post('custom-hostname-webhooks')
|
||||
@@ -57,6 +60,10 @@ export class CloudflareController {
|
||||
|
||||
if (!workspace) return;
|
||||
|
||||
const analytics = this.analyticsService.createAnalyticsContext({
|
||||
workspaceId: workspace.id,
|
||||
});
|
||||
|
||||
const customDomainDetails =
|
||||
await this.customDomainService.getCustomDomainDetails(
|
||||
req.body.data.data.hostname,
|
||||
@@ -83,6 +90,8 @@ export class CloudflareController {
|
||||
...workspace,
|
||||
...workspaceUpdated,
|
||||
});
|
||||
|
||||
await analytics.track(CUSTOM_DOMAIN_ACTIVATED_EVENT, {});
|
||||
}
|
||||
|
||||
return res.status(200).send();
|
||||
|
||||
+8
@@ -3,6 +3,7 @@ import { getRepositoryToken } from '@nestjs/typeorm';
|
||||
|
||||
import { Request, Response } from 'express';
|
||||
import { Repository } from 'typeorm';
|
||||
import { AnalyticsContextMock } from 'test/utils/analytics-context.mock';
|
||||
|
||||
import { CloudflareController } from 'src/engine/core-modules/domain-manager/controllers/cloudflare.controller';
|
||||
import { CustomDomainValidRecords } from 'src/engine/core-modules/domain-manager/dtos/custom-domain-valid-records';
|
||||
@@ -12,6 +13,7 @@ import { ExceptionHandlerService } from 'src/engine/core-modules/exception-handl
|
||||
import { HttpExceptionHandlerService } from 'src/engine/core-modules/exception-handler/http-exception-handler.service';
|
||||
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
|
||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||
import { AnalyticsService } from 'src/engine/core-modules/analytics/services/analytics.service';
|
||||
|
||||
describe('CloudflareController - customHostnameWebhooks', () => {
|
||||
let controller: CloudflareController;
|
||||
@@ -61,6 +63,12 @@ describe('CloudflareController - customHostnameWebhooks', () => {
|
||||
get: jest.fn(),
|
||||
},
|
||||
},
|
||||
{
|
||||
provide: AnalyticsService,
|
||||
useValue: {
|
||||
createAnalyticsContext: AnalyticsContextMock,
|
||||
},
|
||||
},
|
||||
],
|
||||
}).compile();
|
||||
|
||||
|
||||
+2
-1
@@ -5,9 +5,10 @@ import { DomainManagerService } from 'src/engine/core-modules/domain-manager/ser
|
||||
import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity';
|
||||
import { CloudflareController } from 'src/engine/core-modules/domain-manager/controllers/cloudflare.controller';
|
||||
import { CustomDomainService } from 'src/engine/core-modules/domain-manager/services/custom-domain.service';
|
||||
import { AnalyticsModule } from 'src/engine/core-modules/analytics/analytics.module';
|
||||
|
||||
@Module({
|
||||
imports: [TypeOrmModule.forFeature([Workspace], 'core')],
|
||||
imports: [AnalyticsModule, TypeOrmModule.forFeature([Workspace], 'core')],
|
||||
providers: [DomainManagerService, CustomDomainService],
|
||||
exports: [DomainManagerService, CustomDomainService],
|
||||
controllers: [CloudflareController],
|
||||
|
||||
+9
-1
@@ -2,10 +2,12 @@ import { Test, TestingModule } from '@nestjs/testing';
|
||||
|
||||
import Cloudflare from 'cloudflare';
|
||||
import { CustomHostnameCreateResponse } from 'cloudflare/resources/custom-hostnames/custom-hostnames';
|
||||
import { AnalyticsContextMock } from 'test/utils/analytics-context.mock';
|
||||
|
||||
import { DomainManagerException } from 'src/engine/core-modules/domain-manager/domain-manager.exception';
|
||||
import { CustomDomainService } from 'src/engine/core-modules/domain-manager/services/custom-domain.service';
|
||||
import { DomainManagerService } from 'src/engine/core-modules/domain-manager/services/domain-manager.service';
|
||||
import { DomainManagerException } from 'src/engine/core-modules/domain-manager/domain-manager.exception';
|
||||
import { AnalyticsService } from 'src/engine/core-modules/analytics/services/analytics.service';
|
||||
import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service';
|
||||
|
||||
jest.mock('cloudflare');
|
||||
@@ -25,6 +27,12 @@ describe('CustomDomainService', () => {
|
||||
get: jest.fn(),
|
||||
},
|
||||
},
|
||||
{
|
||||
provide: AnalyticsService,
|
||||
useValue: {
|
||||
createAnalyticsContext: AnalyticsContextMock,
|
||||
},
|
||||
},
|
||||
{
|
||||
provide: DomainManagerService,
|
||||
useValue: {
|
||||
|
||||
Reference in New Issue
Block a user