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 { return await this.recordPageViewUseCase.execute(input); } async recordEngagement(input: RecordEngagementInput): Promise { return await this.recordEngagementUseCase.execute(input); } }