Skip to content

Commit 01a90b3

Browse files
authored
feat: event logger controller (#474)
1 parent 1830240 commit 01a90b3

4 files changed

+69
-3
lines changed

src/app.module.ts

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { AuthModule } from './auth/auth.module';
66
import { CoursePartnerModule } from './course-partner/course-partner.module';
77
import { CourseUserModule } from './course-user/course-user.module';
88
import { CourseModule } from './course/course.module';
9+
import { EventLoggerModule } from './event-logger/event-logger.module';
910
import { FeatureModule } from './feature/feature.module';
1011
import { LoggerModule } from './logger/logger.module';
1112
import { PartnerAccessModule } from './partner-access/partner-access.module';
@@ -37,6 +38,7 @@ import { WebhooksModule } from './webhooks/webhooks.module';
3738
SubscriptionUserModule,
3839
FeatureModule,
3940
PartnerFeatureModule,
41+
EventLoggerModule,
4042
],
4143
})
4244
export class AppModule {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Body, Controller, Post, Req, UseGuards } from '@nestjs/common';
2+
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
3+
import { FirebaseAuthGuard } from 'src/firebase/firebase-auth.guard';
4+
import { ControllerDecorator } from 'src/utils/controller.decorator';
5+
import { EVENT_NAME } from './event-logger.interface';
6+
import { EventLoggerService } from './event-logger.service';
7+
8+
@ApiTags('Event Logger')
9+
@ControllerDecorator()
10+
@Controller('/v1/event-logger')
11+
export class EventLoggerController {
12+
constructor(private readonly eventLoggerService: EventLoggerService) {}
13+
14+
@Post()
15+
@ApiOperation({
16+
description: 'Creates an event log',
17+
})
18+
@ApiBearerAuth('access-token')
19+
@UseGuards(FirebaseAuthGuard)
20+
async createEventLog(@Req() req: Request, @Body() { event }: { event: EVENT_NAME }) {
21+
const now = new Date();
22+
return await this.eventLoggerService.createEventLog({
23+
userId: req['userEntity'].id,
24+
event,
25+
date: now,
26+
});
27+
}
28+
}

src/event-logger/event-logger.interface.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
export enum EVENT_NAME {
22
CHAT_MESSAGE_SENT = 'CHAT_MESSAGE_SENT',
3+
LOGGED_IN = 'LOGGED_IN',
4+
LOGGED_OUT = 'LOGGED_OUT',
35
}
46

57
export interface ICreateEventLog {
+37-3
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,44 @@
11
import { Module } from '@nestjs/common';
22
import { TypeOrmModule } from '@nestjs/typeorm';
3+
import { SlackMessageClient } from 'src/api/slack/slack-api';
4+
import { ZapierWebhookClient } from 'src/api/zapier/zapier-webhook-client';
35
import { EventLogEntity } from 'src/entities/event-log.entity';
6+
import { PartnerAccessEntity } from 'src/entities/partner-access.entity';
7+
import { PartnerEntity } from 'src/entities/partner.entity';
8+
import { SubscriptionUserEntity } from 'src/entities/subscription-user.entity';
9+
import { SubscriptionEntity } from 'src/entities/subscription.entity';
10+
import { TherapySessionEntity } from 'src/entities/therapy-session.entity';
11+
import { UserEntity } from 'src/entities/user.entity';
12+
import { PartnerAccessService } from 'src/partner-access/partner-access.service';
13+
import { SubscriptionUserService } from 'src/subscription-user/subscription-user.service';
14+
import { SubscriptionService } from 'src/subscription/subscription.service';
15+
import { TherapySessionService } from 'src/therapy-session/therapy-session.service';
16+
import { UserService } from 'src/user/user.service';
17+
import { EventLoggerController } from './event-logger.controller';
418
import { EventLoggerService } from './event-logger.service';
519

620
@Module({
7-
imports: [TypeOrmModule.forFeature([EventLogEntity])],
8-
providers: [EventLoggerService],
21+
imports: [
22+
TypeOrmModule.forFeature([
23+
EventLogEntity,
24+
UserEntity,
25+
PartnerAccessEntity,
26+
PartnerEntity,
27+
SubscriptionUserEntity,
28+
TherapySessionEntity,
29+
SubscriptionEntity,
30+
]),
31+
],
32+
controllers: [EventLoggerController],
33+
providers: [
34+
EventLoggerService,
35+
UserService,
36+
SubscriptionUserService,
37+
TherapySessionService,
38+
PartnerAccessService,
39+
SubscriptionService,
40+
ZapierWebhookClient,
41+
SlackMessageClient,
42+
],
943
})
10-
export class SessionModule {}
44+
export class EventLoggerModule {}

0 commit comments

Comments
 (0)