diff --git a/src/modules/database/database.module.ts b/src/modules/database/database.module.ts index cfa5a6a..3b45a74 100644 --- a/src/modules/database/database.module.ts +++ b/src/modules/database/database.module.ts @@ -48,7 +48,7 @@ const DatabaseModule = Module.forRootAsync({ return { type: 'postgres', - entities: [__dirname + '/../modules/**/*.entity{.ts,.js}'], + autoLoadEntities: true, namingStrategy: new SnakeNamingStrategy(), synchronize: false, // diff --git a/src/modules/holiday/holiday.service.ts b/src/modules/holiday/holiday.service.ts index 3142092..33d0190 100644 --- a/src/modules/holiday/holiday.service.ts +++ b/src/modules/holiday/holiday.service.ts @@ -1,11 +1,12 @@ import { Injectable, Logger } from '@nestjs/common'; import { UpdateHolidayDto } from './dto/update-holiday.dto'; import * as dayjs from 'dayjs'; -import { Connection } from 'typeorm'; +import { Connection, Repository } from 'typeorm'; import { lastValueFrom } from 'rxjs'; import { HttpService } from '@nestjs/axios'; import { HolidayType } from '@src/modules/holiday/holiday.type'; -import { HolidayRepository } from '@src/modules/holiday/repository/holiday.repository'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Holiday } from '@src/modules/holiday/entities/holiday.entity'; @Injectable() export class HolidayService { @@ -14,7 +15,7 @@ export class HolidayService { constructor( private readonly httpService: HttpService, private readonly connection: Connection, - private readonly holidayRepository: HolidayRepository, + @InjectRepository(Holiday) private holidayRepository: Repository, ) {} private async startTransaction() { diff --git a/src/modules/holiday/repository/holiday.repository.ts b/src/modules/holiday/repository/holiday.repository.ts deleted file mode 100644 index 6c5b9f6..0000000 --- a/src/modules/holiday/repository/holiday.repository.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { DataSource, Repository } from 'typeorm'; -import { Holiday } from '@src/modules/holiday/entities/holiday.entity'; - -@Injectable() -export class HolidayRepository extends Repository { - constructor(private dataSource: DataSource) { - super(Holiday, dataSource.createEntityManager()); - } -} diff --git a/src/modules/motivation/entities/motivation.entity.ts b/src/modules/motivation/entities/motivation.entity.ts index 467944e..a54cdab 100644 --- a/src/modules/motivation/entities/motivation.entity.ts +++ b/src/modules/motivation/entities/motivation.entity.ts @@ -19,6 +19,7 @@ export class Motivation { comment: '카테고리', enum: CategoryType, default: CategoryType.기타, + type: 'integer', }) category: CategoryType; } diff --git a/src/modules/motivation/motivation.module.ts b/src/modules/motivation/motivation.module.ts index 844e1d9..8e10ae3 100644 --- a/src/modules/motivation/motivation.module.ts +++ b/src/modules/motivation/motivation.module.ts @@ -1,11 +1,11 @@ import { Module } from '@nestjs/common'; import { MotivationService } from './motivation.service'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { User } from '@src/modules/user/entities/user.entity'; -import { Motivation } from '@src/modules/motivation/entities/motivation.entity'; import { HttpModule } from '@nestjs/axios'; -import { Holiday } from '@src/modules/holiday/entities/holiday.entity'; import { SlackModule } from '@src/modules/slack/slack.module'; +import { Motivation } from '@src/modules/motivation/entities/motivation.entity'; +import { User } from '@src/modules/user/entities/user.entity'; +import { Holiday } from '@src/modules/holiday/entities/holiday.entity'; @Module({ imports: [TypeOrmModule.forFeature([User, Motivation, Holiday]), HttpModule, SlackModule], diff --git a/src/modules/motivation/motivation.service.ts b/src/modules/motivation/motivation.service.ts index 9909438..38e40c4 100644 --- a/src/modules/motivation/motivation.service.ts +++ b/src/modules/motivation/motivation.service.ts @@ -5,18 +5,18 @@ import { Motivation } from '@src/modules/motivation/entities/motivation.entity'; import * as dayjs from 'dayjs'; import { CategoryType } from '@src/modules/motivation/movitation.type'; import { Cron } from '@nestjs/schedule'; -import { UserRepository } from '@src/modules/user/repository/user.repository'; -import { HolidayRepository } from '@src/modules/holiday/repository/holiday.repository'; -import { MotivationRepository } from '@src/modules/motivation/repository/motivation.repository'; import { SlackInteractiveService } from '@src/modules/slack/slack.interactive.service'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; +import { Holiday } from '@src/modules/holiday/entities/holiday.entity'; @Injectable() export class MotivationService { private readonly logger: Logger = new Logger(this.constructor.name); constructor( - private readonly userRepository: UserRepository, - private readonly motivationRepository: MotivationRepository, - private readonly holidayRepository: HolidayRepository, + @InjectRepository(User) private userRepository: Repository, + @InjectRepository(Motivation) private motivationRepository: Repository, + @InjectRepository(Holiday) private holidayRepository: Repository, private readonly slackInteractiveService: SlackInteractiveService, ) {} diff --git a/src/modules/motivation/repository/motivation.repository.ts b/src/modules/motivation/repository/motivation.repository.ts deleted file mode 100644 index ee2b857..0000000 --- a/src/modules/motivation/repository/motivation.repository.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Injectable } from '@nestjs/common'; -import { DataSource, Repository } from 'typeorm'; -import { Motivation } from '@src/modules/motivation/entities/motivation.entity'; - -@Injectable() -export class MotivationRepository extends Repository { - constructor(dataSource: DataSource) { - super(Motivation, dataSource.createEntityManager()); - } -} diff --git a/src/modules/slack/slack.controller.ts b/src/modules/slack/slack.controller.ts index 9d9e78b..31f2d62 100644 --- a/src/modules/slack/slack.controller.ts +++ b/src/modules/slack/slack.controller.ts @@ -11,18 +11,14 @@ import { SlackInteractiveService } from '@src/modules/slack/slack.interactive.se import { SlackEventService } from '@src/modules/slack/slack.event.service'; import { ACTION_ID } from '@src/modules/slack/slack.constants'; import { ChatPostMessageResponse, ViewsPublishResponse } from '@slack/web-api'; -import { NotionService } from '@lib/notion'; -import { NotionType } from '@lib/notion/notion.type'; -import { isNil } from '@nestjs/common/utils/shared.utils'; -@Controller('slack') +@Controller('slack-event') @SlackEventListener() @SlackInteractivityListener() export class SlackController { constructor( private readonly slackInteractiveService: SlackInteractiveService, private readonly slackEventService: SlackEventService, - private readonly notionService: NotionService, ) {} // event-api @@ -31,8 +27,7 @@ export class SlackController { if (this.slackEventService.isDMChannel(event)) return; if (this.slackEventService.isBot(event)) return; if (event.text) { - const message = await this.notionService.searchQueryByName(event.text, NotionType.EASTER_EGG); - await this.slackEventService.sendEasterEgg(event, message); + await this.slackEventService.sendEasterEgg(event); } return this.slackInteractiveService.postMessage( event.channel, diff --git a/src/modules/slack/slack.event.service.ts b/src/modules/slack/slack.event.service.ts index c283dac..6d1726a 100644 --- a/src/modules/slack/slack.event.service.ts +++ b/src/modules/slack/slack.event.service.ts @@ -1,20 +1,22 @@ import { Injectable, Logger } from '@nestjs/common'; -import { NotionService } from '@lib/notion'; import { BotProfile, SlackEventDto } from '@src/modules/slack/dto/slack-event.dto'; import { SlackInteractiveService } from '@src/modules/slack/slack.interactive.service'; -import { UserRepository } from '@src/modules/user/repository/user.repository'; import { ChatPostMessageResponse, UsersInfoResponse, ViewsPublishResponse } from '@slack/web-api'; import { User } from '@src/modules/user/entities/user.entity'; import { InjectSlackClient, SlackClient } from 'nestjs-slack-listener'; +import { NotionType } from '@lib/notion/notion.type'; +import { NotionService } from '@lib/notion'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; @Injectable() export class SlackEventService { private readonly logger: Logger = new Logger(this.constructor.name); constructor( - private readonly userRepository: UserRepository, - private readonly notionService: NotionService, + @InjectRepository(User) private userRepository: Repository, private readonly slackInteractiveService: SlackInteractiveService, + private readonly notionService: NotionService, @InjectSlackClient() private readonly slack: SlackClient, ) {} @@ -74,9 +76,10 @@ export class SlackEventService { /** * 이스터에그 메시지 발송 * @param event - * @param message */ - async sendEasterEgg(event: SlackEventDto, message: string): Promise { + async sendEasterEgg(event: SlackEventDto): Promise { + let message = await this.notionService.searchQueryByName(event.text, NotionType.EASTER_EGG); + const user = await this.userRepository.findOneBy({ id: event.user }); message = message.replace(/\${name}/gi, user.name); // if (user.jerry) diff --git a/src/modules/slack/slack.interactive.service.ts b/src/modules/slack/slack.interactive.service.ts index a89100d..1f1d92b 100644 --- a/src/modules/slack/slack.interactive.service.ts +++ b/src/modules/slack/slack.interactive.service.ts @@ -5,14 +5,15 @@ import { Cron, CronExpression } from '@nestjs/schedule'; import { NotionService } from '@lib/notion'; import { InjectSlackClient, SlackClient } from 'nestjs-slack-listener'; import { ChatPostMessageResponse, ViewsPublishArguments, ViewsPublishResponse } from '@slack/web-api'; -import { UserRepository } from '@src/modules/user/repository/user.repository'; import { User } from '@src/modules/user/entities/user.entity'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; @Injectable() export class SlackInteractiveService { private readonly loggger: Logger = new Logger(this.constructor.name); constructor( - private readonly userRepository: UserRepository, + @InjectRepository(User) private userRepository: Repository, private readonly notionService: NotionService, @InjectSlackClient() private readonly slack: SlackClient, diff --git a/src/modules/slack/slack.module.ts b/src/modules/slack/slack.module.ts index 114e335..f11aa92 100644 --- a/src/modules/slack/slack.module.ts +++ b/src/modules/slack/slack.module.ts @@ -1,17 +1,20 @@ import { Module } from '@nestjs/common'; import { SlackController } from './slack.controller'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { User } from '@src/modules/user/entities/user.entity'; import { NotionModule } from '@lib/notion'; import { SlackInteractiveService } from '@src/modules/slack/slack.interactive.service'; import { SlackEventService } from '@src/modules/slack/slack.event.service'; +import { ConfigModule } from '@nestjs/config'; +import { User } from '@src/modules/user/entities/user.entity'; @Module({ imports: [ + ConfigModule.forRoot(), TypeOrmModule.forFeature([User]), NotionModule.register({ notionToken: process.env.NOTION_TOKEN, easterEggDataBaseId: process.env.EASTER_EGG_DB }), ], controllers: [SlackController], providers: [SlackInteractiveService, SlackEventService], + exports: [SlackEventService, SlackInteractiveService], }) export class SlackModule {} diff --git a/src/modules/user/repository/user.repository.ts b/src/modules/user/repository/user.repository.ts deleted file mode 100644 index 262afcc..0000000 --- a/src/modules/user/repository/user.repository.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { DataSource, EntityRepository, Repository } from 'typeorm'; -import { Injectable } from '@nestjs/common'; -import { User } from '@src/modules/user/entities/user.entity'; - -@Injectable() -export class UserRepository extends Repository { - constructor(private dataSource: DataSource) { - super(User, dataSource.createEntityManager()); - } -} diff --git a/src/modules/user/user.service.ts b/src/modules/user/user.service.ts index 32dd551..c54fa52 100644 --- a/src/modules/user/user.service.ts +++ b/src/modules/user/user.service.ts @@ -1,13 +1,14 @@ import { Injectable, Logger } from '@nestjs/common'; import * as dayjs from 'dayjs'; import { User } from '@src/modules/user/entities/user.entity'; -import { UserRepository } from '@src/modules/user/repository/user.repository'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; @Injectable() export class UserService { private readonly logger: Logger = new Logger(this.constructor.name); - constructor(private readonly userRepository: UserRepository) {} + constructor(@InjectRepository(User) private userRepository: Repository) {} /** * 사용자 정보를 생성합니다.