27 lines
1.2 KiB
TypeScript
27 lines
1.2 KiB
TypeScript
import { Injectable, Inject } from '@nestjs/common';
|
|
import { RecordEngagementInput, RecordEngagementOutput, RecordPageViewInput, RecordPageViewOutput } from './dto/AnalyticsDto';
|
|
import { Logger } from '@core/shared/logging/Logger';
|
|
import { RecordPageViewUseCase } from './use-cases/RecordPageViewUseCase';
|
|
import { RecordEngagementUseCase } from './use-cases/RecordEngagementUseCase';
|
|
|
|
const Logger_TOKEN = 'Logger_TOKEN';
|
|
const RECORD_PAGE_VIEW_USE_CASE_TOKEN = 'RecordPageViewUseCase_TOKEN';
|
|
const RECORD_ENGAGEMENT_USE_CASE_TOKEN = 'RecordEngagementUseCase_TOKEN';
|
|
|
|
@Injectable()
|
|
export class AnalyticsService {
|
|
constructor(
|
|
@Inject(RECORD_PAGE_VIEW_USE_CASE_TOKEN) private readonly recordPageViewUseCase: RecordPageViewUseCase,
|
|
@Inject(RECORD_ENGAGEMENT_USE_CASE_TOKEN) private readonly recordEngagementUseCase: RecordEngagementUseCase,
|
|
@Inject(Logger_TOKEN) private readonly logger: Logger,
|
|
) {}
|
|
|
|
async recordPageView(input: RecordPageViewInput): Promise<RecordPageViewOutput> {
|
|
return await this.recordPageViewUseCase.execute(input);
|
|
}
|
|
|
|
async recordEngagement(input: RecordEngagementInput): Promise<RecordEngagementOutput> {
|
|
return await this.recordEngagementUseCase.execute(input);
|
|
}
|
|
}
|