Skip to content

Commit

Permalink
feat: event logger controller (#474)
Browse files Browse the repository at this point in the history
  • Loading branch information
annarhughes authored Jun 13, 2024
1 parent 1830240 commit 01a90b3
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 3 deletions.
2 changes: 2 additions & 0 deletions src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { AuthModule } from './auth/auth.module';
import { CoursePartnerModule } from './course-partner/course-partner.module';
import { CourseUserModule } from './course-user/course-user.module';
import { CourseModule } from './course/course.module';
import { EventLoggerModule } from './event-logger/event-logger.module';
import { FeatureModule } from './feature/feature.module';
import { LoggerModule } from './logger/logger.module';
import { PartnerAccessModule } from './partner-access/partner-access.module';
Expand Down Expand Up @@ -37,6 +38,7 @@ import { WebhooksModule } from './webhooks/webhooks.module';
SubscriptionUserModule,
FeatureModule,
PartnerFeatureModule,
EventLoggerModule,
],
})
export class AppModule {}
28 changes: 28 additions & 0 deletions src/event-logger/event-logger.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { Body, Controller, Post, Req, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { FirebaseAuthGuard } from 'src/firebase/firebase-auth.guard';
import { ControllerDecorator } from 'src/utils/controller.decorator';
import { EVENT_NAME } from './event-logger.interface';
import { EventLoggerService } from './event-logger.service';

@ApiTags('Event Logger')
@ControllerDecorator()
@Controller('/v1/event-logger')
export class EventLoggerController {
constructor(private readonly eventLoggerService: EventLoggerService) {}

@Post()
@ApiOperation({
description: 'Creates an event log',
})
@ApiBearerAuth('access-token')
@UseGuards(FirebaseAuthGuard)
async createEventLog(@Req() req: Request, @Body() { event }: { event: EVENT_NAME }) {
const now = new Date();
return await this.eventLoggerService.createEventLog({
userId: req['userEntity'].id,
event,
date: now,
});
}
}
2 changes: 2 additions & 0 deletions src/event-logger/event-logger.interface.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
export enum EVENT_NAME {
CHAT_MESSAGE_SENT = 'CHAT_MESSAGE_SENT',
LOGGED_IN = 'LOGGED_IN',
LOGGED_OUT = 'LOGGED_OUT',
}

export interface ICreateEventLog {
Expand Down
40 changes: 37 additions & 3 deletions src/event-logger/event-logger.module.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,44 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { SlackMessageClient } from 'src/api/slack/slack-api';
import { ZapierWebhookClient } from 'src/api/zapier/zapier-webhook-client';
import { EventLogEntity } from 'src/entities/event-log.entity';
import { PartnerAccessEntity } from 'src/entities/partner-access.entity';
import { PartnerEntity } from 'src/entities/partner.entity';
import { SubscriptionUserEntity } from 'src/entities/subscription-user.entity';
import { SubscriptionEntity } from 'src/entities/subscription.entity';
import { TherapySessionEntity } from 'src/entities/therapy-session.entity';
import { UserEntity } from 'src/entities/user.entity';
import { PartnerAccessService } from 'src/partner-access/partner-access.service';
import { SubscriptionUserService } from 'src/subscription-user/subscription-user.service';
import { SubscriptionService } from 'src/subscription/subscription.service';
import { TherapySessionService } from 'src/therapy-session/therapy-session.service';
import { UserService } from 'src/user/user.service';
import { EventLoggerController } from './event-logger.controller';
import { EventLoggerService } from './event-logger.service';

@Module({
imports: [TypeOrmModule.forFeature([EventLogEntity])],
providers: [EventLoggerService],
imports: [
TypeOrmModule.forFeature([
EventLogEntity,
UserEntity,
PartnerAccessEntity,
PartnerEntity,
SubscriptionUserEntity,
TherapySessionEntity,
SubscriptionEntity,
]),
],
controllers: [EventLoggerController],
providers: [
EventLoggerService,
UserService,
SubscriptionUserService,
TherapySessionService,
PartnerAccessService,
SubscriptionService,
ZapierWebhookClient,
SlackMessageClient,
],
})
export class SessionModule {}
export class EventLoggerModule {}

0 comments on commit 01a90b3

Please sign in to comment.