TEAM-LEG3ND / luwak

Backend server for on-demand-cafe project
4 stars 0 forks source link

주문 단건 조회 api 추가 #42

Closed redjen8 closed 3 months ago

redjen8 commented 3 months ago

주문 단건 조회 api 추가 및 be 전체 플로우 재점검 완료했습니다.

PR Point

1. bigint serialize 문제

postgresql 컬럼 타입이 bigint로 저장되는데 이걸 때려 죽어도 serialize 못하는 문제가 있었습니다.

[Nest] 2140  - 2024. 06. 09. 오후 4:12:42   ERROR [ExceptionsHandler] Do not know how to serialize a BigInt
TypeError: Do not know how to serialize a BigInt

https://darraghoriordan.medium.com/postgresql-and-typeorm-advanced-querying-e5d8e4c950d6

다행히도 entity 필드 타입을 string으로 지정해주니 잘 알아먹긴 하는데, 요거 해결책 아시는 분은 PR 반영 부탁드리겠습니다... (관련 모듈인 payment에도 반영 완료)

2. 매장 재료 추가 api에서 shop 저장하지 못하는 문제

1번과 비슷한 결에서 postgresql point 타입을 serialize하지 못하는 문제가 있었습니다. 다행히도 요녀석은 @Columntransformers 옵션 추가하여 해결하였습니다.

@Column({
    type: 'point',
    nullable: true,
    spatialFeatureType: 'Point',
    transformer: {
      from: (v) => v,
      to: (v) => `${v.x}, ${v.y}`,
    },
  })

3. dto deserialize 문제

@Body() 데코레이터로 받는 createOrder dto 가 계속 undefined 로 받아지는 문제가 있었습니다. class-transformer 적용하지 않으면 enum 타입을 deserialize 못하는 것 같네요 @IsEnum 데코레이터 추가해주니 정상 동작했습니다.

4. order 테이블 신규 타입 컬럼 추가되지 않았던 문제

아마 요거 때문에 그동안 매장 api 500 떴지 싶은데, 지난 pr 병합 이후 주문 엔티티에 신규 enum 필드들이 추가되었었는데 실제 개발 db에는 해당 컬럼이 없어서 에러가 발생하고 있었습니다.

order 테이블 드랍 이후 신규 생성해서 자동으로 엔티티에 먹여진 enum 필드 생성하도록 하여 조치하였습니다.