출근 47일차

·2022년 11월 1일
0

회사이야기

목록 보기
47/118

오늘은 많이 짧을 것 같은데(?)

비즈니스 메일을 쓰자!

타사에 메일을 보낼 일이 생겼는데, 한번 써서 보내보라는 이야기가 나왔다

흑흑 반도체는 메일 쓸 일이 없어요(ㅠㅠ)

그래서 조만간 리더님께 첨삭을 받아서 보내게 될 것 같다....
조만간은 아니고 내일은 써서 보내야한다(해결해야함...)

최대한 빠르게 쳐내자!

TypeORM v0.3에서 사용할 수 있는 DataSource로 개발을 하다가 버렸다.

이유는 정말 단순했다

테스트코드를 못짜겠다 -_-

일반적으로 과거 커넥션을 사용하는 것처럼 @InjectDataSource()같은 것은 괜찮겠는데

New DataSource()로 시작해서 TypeOrmModule.forRootAsync의 형태를 쓰지 않고 했더니 데이터소스를 연결하고 끊는 것에 대한 방법을 도무지 못찾겠더라 테스트에서(...)

그래서 그냥 기존에 쓰던 TypeOrmModule.forRootAsync방식으로 선회를 했다.

서로 다른 두개의 데이터베이스를 쓰기

이것저것 헷갈렸지만 결국은 별 어려운게 아니더라(...)

// 원래는 프로덕션과 테스트 데브환경에 따라서 다르게 실행이 되는 것이 맞다 ! 
@Module({
  imports: [
    ConfigModule.forRoot({
      isGlobal: true,
    }),
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      name: 'default', // 지정을 안해도 디폴트로 들어가는 것으로 알고 있다.
      useFactory: async (configService: ConfigService) => {
        return {
          type: 'oracle',
          host: configService.get('DEFAULT_DB_HOST'),
          port: configService.get('DEFAULT_DB_PORT'),
          sid: configService.get('DEFAULT_DB_SID'),
          username: configService.get('DEFAULT_DB_USERNAME'),
          password: configService.get('DEFAULT_DB_PASSWORD'),
          entities: [__dirname + './../**/**.entity{.ts,.js}'],
          dropSchema: false,
          synchronize: false,
          keepConnectionAlive: true,
        };
      },
    }),
    TypeOrmModule.forRootAsync({
      imports: [ConfigModule],
      inject: [ConfigService],
      name: 'second', // <- 두번째부터는 무조건 지정을 해줘야 접근을 할 수 있다.
      useFactory: async (configService: ConfigService) => {
        return {
          type: 'mysql',
          host: configService.get('SECOND_DB_HOST'),
          port: configService.get('SECOND_DB_POST'),
          username: 'configService.get('SECOND_DB_USERNAME'),
          password: 'configService.get('SECOND_DB_PASSWORD'),
          database: 'configService.get('SECOND_DB_DATABASE'),
          entities: [__dirname + './../**/**.entity{.ts,.js}'],
          dropSchema: false,
          synchronize: false,
          keepConnectionAlive: true,
        };
      },
    }),
  ],
})
export class DatabaseModule {}

서비스로직에서 사용할 때, 호출하는 방법

 constructor(
    @InjectDataSource('default')
    private readonly defaultDataSource: DataSource,
    @InjectDataSource('second')
    private readonly secondDataSource: DataSource
  ) {}

정말....복잡하지 않고....단순했다

삽질을 내가 왜 저렇게 많이 하다가 해결방법을 못찾아서 왜 되돌아갔는지 정말 이해를 못할 따름이다(ㅠㅠ)


지금 이것저것 해야할 것이 너무 많아서 어지러운데......
프로세스에 대한 이해가 조금 필요한 파트도 있어서 쪼끔 더 어지럽다@_@

이번주는 조금 많이 정신없게 지나갈 것 같다..

11월 목표는 내일쓰던가 해야겠다 할게 넘만아

profile
물류 서비스 Backend Software Developer

0개의 댓글