4.12

김부릉·2023년 4월 12일
0
  1. DeletePlace.resolver place.id로 findout()하고 place.remove() 한다
  2. GetMyPlace.resover를 할때는 유저아이디와 유저 관계중에 place로 place 리스트를 얻는다. place 관련 crud 테스트
  3. GetNearbyDrivers.resolver find()에 조건을 줘서 드라이빙 중인 유저를 찾는다. isDriving: true, 경도와 위도 Between 값을 주는데 오류남
  4. Active Record vs. Data Mpper 그동안 active record 패턴으로 하고 있엇는데 지금 상황은 Data Mapper 패턴으로 한다고 한다. 더 좋은것 같은데 정확히는 모름 typeorm 에서는 Data Mapper 패턴을 사용하기 위해 getRepository()를 사용한다. 다른건 크게 이전과 달라지는게 없음 between()을 사용하려면.
  5. DriversSubscription 고객이 주변에 있는 드라이버를 구독한다. 웹소켓을 사용해서 드라이버 정보를 계속 받아서 업데이트 시킴, http방식의 정보를 받아서 ok상태를 리턴하는 방식으로 안함. popsub를 사용하고. 이거는 데모용. 초기 설정
  6. 운전자가 위치를 이동하면 그정보를 계속 DriverSubscription에 업데이트 됨. pubSub.publish() 를 이용하는데 잘 이해는 안감 ?? asnycIterator()도 씀.
  7. index.ts에서 subscription endpoint 만들어줌 하다가 토큰 문제 생김. 다음화 보니까 별건 아닌듯
  8. 웹소캣 때문에 context 수정하는데 디폴트로 null과 빈 오브젝트를 줌. 꼼수같기도 잘 모르겠음.
  9. withFilter() 를 쓴다. withFilter 안에 함수 두개 들어가는데 처음 함수는 66번에 asyncIterator()로 구독한 정보 얻어오고 두번째 함수는 그중에서 조건에 맞는거 걸러냄 여기서는 아규먼트중에 첫번째 payload에서 드라이버의 위치, 세번째 context에 담아둔 currentUser 의 위치 비교해서 걸러줌
  10. 웹소캣 만든거 테스트. 테스트 중에 지연되는 버그 발생. RoportMovement.resolver 에서 유저의 위치를 업데이트 한 후에 다시 그 유저객체를 findone()해서 pubSub.publish()에 넣는데. 앞에 "driverUpdate"가 payload가 되는건가봄
  11. RequestRide.resolver 만들기. req에서 받아온 유저 정보 넣어서 create() 함.
  12. GetNearbyRideds.resolver getRepository()를 사용해서 픽업 가능 구간 설정한다 상태도 "REQUESTING" 으로 설정.
  13. NearbyRideSubscrioption pubSub.publish("riderequest", {NearbyRideSubscription: ride}) riderequest를 구독하고 NearbyRideSubscription가 payload에 들어간다
  14. 테스트
  15. UpdateRideStatus.resolver 운전자의 유저 아이디와 status만 update 한다. status는 enum 으로 5개만 만들어서 사용한다.
  16. ride status 분기문으로 결정하는데 조금 복잡함 다음에 다시보기.
  17. GetRide.resolver 에서는 운전자든 사용자든 상관없이 getRide 할수 있다 User 객체를 다 가져오면 무거우니까 필요한 id만 가져오기위해서 엔티티 수정한다. driverId passenserId 추가함
  18. RideStatusSubscription은 구독상태로 만듬. 그래서 UpdateRideStatus.resolver 안에 분기 한부분에 낑겨넣음.
  19. test
  20. Chat 시작. ride status가 ACCETED 가 되면 드라이버와 승객은 chat을 할 수 있음. chat.create() 해주고 드라이버는 받아온 user, 승객은 relations: ["passenger"] 추가해서 passenger 넣음. 왜 배열 형태지.
  21. GetChat 만드는데 버그 생겨서 내용 없음. User 에 chat 지움.
  22. ride와 chat은 onetoone 관계가 된다. 각각에 맞게 엔티티 대수정. UpdateRideStatus에도 chat생성하고 ride.chat에 chat 넣어주고 save()
  23. ride status가 ACCETED 가 됐을 때 chatId 가 생성되는지 테스트 GetChat에 relations에 ["messages"] 추가
  24. SendChatMessage.resolver chat과 user.id를 if문으로 참인지 확인하고 Message.create()
  25. MessageSubscription withfilter로 newchatmessge를 구독하고, currentrUser가 chat의 driverId 나 passengerId와 일치하면 true를 return 한다.
  26. 마무리. 프엔에서 만나자.

0개의 댓글