Account와 Session 스키마에서 type을 그냥 String, Date로 줬던 것을 mongoose.Schema.Types.String, mongoose.Schema.Types.Date 등으로 바꿨다.
NextAuth의 TypeORM의 User 모델을 상속받아 User 모델을 만들었는데, mongoose의 models에 연결하는 것을 실패했다. TypeORM의 Schema가 mongoDB의 것과 달라서 그런 것 같다. 그래서 User 모델을 변경하는 대신 새로운 모델을 만들어서 챌린지 정보를 저장하려 한다.
챌린지와 관련된 정보를 저장하는 Challenge 모델을 만들었다. 그리고 내 저장소를 업데이트 하는데 까지 성공했다. 그러나 아직 getServerSideProps()에서 userId를 이용해 DB에 저장되어 있는 내 저장소를 불러오는 것이 안된다. 이를 위해서는 middleware가 필요한 것 같다. 내일 좀 더 공부해봐야겠다.
어제 해결이 안 된 문제는 getServerSideProps() 에서 context.request에서 session 값을 받는 방법이 안되서, 그냥 userId를 미리 받은 후 dynamic API routes로 해결했다. 이제 유저의 저장소 불러오기, 삭제, 업데이트가 가능하다.
어제 만든 유저 저장소 기능에서 저장소의 commit 을 모두 얻어 날짜를 체크해서 자동으로 해당 챌린지 날짜에 넣는 기능을 추가했다. 그런데 10월 31일로 떠야하는 날 하나가 계속 11월 1일로 뜬다. 아무래도 시간대 때문인 것 같다. 그리고 나처럼 그 날 100-days-of-code 저장소를 업데이트 하는 걸 깜빡하거나 일주일에 한 번 씩 의무적으로 쉬는 경우를 고려해서 만드려고했는데, 오히려 너무 복잡해지는 것 같다. 내가 생각했단 것 보다 고려해야 할 케이스가 더 많아서 우선 순서도를 그려야겠다.
font family 를 tailwind.config.js에 추가한 후 아무것도 동작하지 않아서 애를 먹었다. 그래도 기본적인 UI 절반은 완성했다.
우선 첫 사이드 프로젝트는 2주차에서 마무리짓기로 했다. Next.js를 처음 사용해 본 프로젝트였고 내가 뭘 모르고 있는지 많이 배웠다. 그리고 시간이 지나면서 좋지 않은 습관들이 자리를 잡고, 기초를 많이 잊었다는 것을 깨달았다. 다시 초심으로 돌아가 리액트는 물론 html, css, Vanilla JavaScript에 대한 기본기도 복습하는 시간을 가질 예정이다. 이번 사이드 프로젝트에서는 처음 사용한게 많다보니 너무 혼란스럽고, 또 웹 디자인을 할 줄 몰라서 결국 내가 원하는 결과물을 만들 수 없다는 점을 깨달았다. 내가 100일 코딩 챌린지를 시작하기 전에는 프론트엔드 개발자로서 역량을 다지자는 마음가짐이었는데 새로운 걸 사용해보고 싶다는 욕심에 결국 이도저도 아니게 마무리 된 것 같다. 그래도 2주 동안 많은 걸 느꼈으니 의미 있는 시간이었다.